文章目录
一、概念
创建ConfigMap后,数据实际会存储在K8s(Etcd)中,然后通过创建Pod时引用该数据。
Pod使用ConfigMap挂载的两种方式
- 变量注入
- 数据卷挂载
二、实例
2.1.创建一个configmap
方式一:
apiVersion v1
kind ConfigMap
metadata
name redis-cfg
data
#以键值对的形式定义
abc"123"
bcd"456"
#以文本的形式定义,适用于多行文件;|表示支持多行
redis.properties
port: 6379
host: 192.168.1.10
方式二:指定文件生成并创建configmap
kubectl create cm myconfigmap --from-file=application.yml -n mynamespace
2.2.Pod使用configmap
apiVersion v1
kind Pod
metadata
name configmap-demo-pod
spec
containers
name demo
image nginx
imagePullPolicy IfNotPresent
env
name ABC
valueFrom
configMapKeyRef
name redis-cfg
key abc
name BCD
valueFrom
configMapKeyRef
name redis-cfg
key bcd
volumeMounts
name config #卷名
mountPath"/config" #挂载到容器的/config目录下
readOnlytrue
volumes
name config #卷名
configMap
name redis-cfg #configmap的名字
items
key"redis.properties" #configmap中的文件名
path"redis_config" #挂载到容器后的文件名
进入到容器中查看
三、subPath
参考文章:
K8s subPath
volumeMounts:
- name: nginx-config
mountPath: /etc/nginx/nginx.conf # 也可挂载到文件
subPath: nginx.conf # 挂载到文件时,需设置子路径
将名为 nginx-config的 volume 中的 nginx.conf key 对应内容,以文件形式挂载到容器中 /etc/nginx/nginx.conf 路径。
需注意:在 ConfigMap 中使用 subPath 将影响 ConfigMap 内容变化时的自动更新。