ConfigMap来替代环境变量,ConfigMap可以被用来填入环境变量; configmap里面的信息读入环境变量,而容器启动的时候可以利用这些环境变量.
ConfigMap是以key:value的形式保存配置项,既可以用于表示一个变量的值(例如config=info),也可以用于表示一个完整配置文件的内容(例如server.xml=<?xml…>…)。
configmap创建有二种方式,
一是命令行方式,分为从字面读取(--from-literal)和从目录(--from-file)读取。
下面是二者区别
1,1.--from-literal从字面读取的好处就是快速和便捷,你可以通过关键字参数的形式(**kargs),将配置信息直接传递至configmap,然后在pod启动的时候进行加载;同时这个方式的弊端就是,变量不能实时更新到pod容器。
1,2 --from-file从目录读取的好处可以实时更新到pod容器。
二是yaml方式。
下面主要是从字面读取(--from-literal)和从目录(--from-file)读取的实战。
1)--from-literal实战
因为文件不好编排,有关yaml文件可以自己创建,可以私信找我要
kubectl create ns config
创建configmap,赋值二个参数
kubectl create cm filebeat-cfg -n config --from-literal=redis_host="redis.test.com" --from-literal=log_level="info"
查询相关内容
kubectl get cm filebeat-cfg -n config -o yaml
创建pod
kubectl apply -f nginx.yaml
互动执行,进入后env看看相关变量
kubectl exec -it nginx -n config -- /bin/sh
编辑相关变量
kubectl edit cm filebeat-cfg -n config -o yaml
kubectl get cm filebeat-cfg -n config -o yaml
看看有没有生效
kubectl exec -it nginx -n config -- /bin/sh
2)--from-file
/root/mainfasts下准备server1.conf,server2.conf文件
创建configmap
kubectl create configmap nginx-cfg -n config --from-file=/root/mainfasts
kubectl get cm -n config -o yaml
创建pod,采用volume挂载
kubectl apply -f nginx-volumes.yaml
进入pod查看环境变量
kubectl exec -it nginx -n config -- /bin/sh后执行env
更新相关变量
kubectl edit cm nginx-cfg -n config -o yaml
再次查看已经发生变化。