一般使用这个存储配置文件
我们以redis的配置文件,存储为一个configmap
我们新建一个redis.properties文件,内容如下:
redis.host=127.0.0.1
redis.port=6379
redis.password=123456
kubectl create configmap redis-config --from-file=redis.properties
我们进行查看
我们接下来运行一个pod,pod的配置文件cm.yaml内容为:
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: busybox
image: busybox
command: [ "/bin/sh","-c","cat /etc/config/redis.properties" ]
volumeMounts:
- name: config-volume
mountPath: /etc/config
volumes:
- name: config-volume
configMap:
name: redis-config
restartPolicy: Never
我们定义一个volume,名字叫config-volume,来自configMap,容器的挂载对应config-volume,容器启动的时候会执行cat命令,我们可以通过日志进行查看。
第二种方式,以变量的形式进行挂载,类似secret
我们新建一个变量的定义myconfig.yaml,内容如下:
apiVersion: v1
kind: ConfigMap
metadata:
name: myconfig
namespace: default
data:
special.level: info
special.type: hello
从配置文件中,我们看到我们定义了两个变量info和hello
启动进行查看
有了变量定义,我们构建我们的pod容器,config-var.yaml
apiVersion: v1
kind: Pod
metadata:
name: mypod3
spec:
containers:
- name: busybox
image: busybox
command: [ "/bin/sh", "-c", "echo $(LEVEL) $(TYPE)" ]
env:
- name: LEVEL
valueFrom:
configMapKeyRef:
name: myconfig
key: special.level
- name: TYPE
valueFrom:
configMapKeyRef:
name: myconfig
key: special.type
restartPolicy: Never
可以看到我们定义了一个叫mypod3的容器,env配置环境变量LEVEL和TYPE,命名随便,跟env的name对应即可,值来自myconfig的key
可以看到把info hello输出来了。