在 Kubernetes 中,ConfigMap 是一种用于存储非敏感信息的 Kubernetes 对象。它用于存储配置数据,如键值对、整个配置文件或 JSON 数据等。ConfigMap 通常用于容器镜像中的配置文件、命令行参数和环境变量等。
ConfigMap 可以通过三种方式进行配置数据的注入:
sh# 查看 configmap
kubectl get configmap/cm
# 查看详细
kubectl describe configmap/cm my-config
# 删除 cm
kubectl delete cm my-config
shkubectl create configmap my-config --from-literal=key1=value1 --from-literal=key2=value2
可以通过创建YAML文件的方式来定义configmap的内容。例如,创建一个名为my-config
的configmap,内容如下:
yml# 格式
apiVersion: v1
kind: ConfigMap
metadata:
name: app-cm
data:
key1: value1
key2: value2
ymlapiVersion: v1
kind: ConfigMap
metadata:
name: app-cm
data:
name: "songxuan2"
age: '24'
env方式
ymlapiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: busybox
command: ["/bin/sh", "-c", "echo $BUSY_NAME ; sleep 3600;"]
env:
# name: 是容器需要环境变量名称
- name: BUSY_NAME
# valueForm: value 来源与什么
valueFrom:
configMapKeyRef: # 值来源与 configmap 来源与哪个 configmap 来源与哪个 configmap 中 key
name: app-cm
key: name
envFrom方式
ymlapiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: busybox
command: ["/bin/sh", "-c", "echo $name ;echo $age; sleep 3600;"]
# 一次性注入这个 configmap
envFrom:
- configMapRef:
name: app-cm
configmap文件
ymlapiVersion: v1
kind: ConfigMap
metadata:
name: app-cm
data:
123.yml: |
name: "songxuan2"
age: '24'
测试pod文件
ymlapiVersion: v1
kind: Pod
metadata:
name: myapp-pod
spec:
containers:
- name: myapp-container
image: busybox
command: ["/bin/sh","-c","sleep 3600"]
volumeMounts:
- name: data-volume #卷的名称要相同
mountPath: /data #挂载到容器内的/data目录
volumes:
- name: data-volume #卷的名称要相同
configMap:
name: app-cm #名字需要跟configmap的名称相同
进入pod容器内查看
本文作者:松轩(^U^)
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!