典型的使用场景:nginx
建立方式:vim
字面值建立:bash
kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2
使用文件建立:app
kubectl create configmap my-config-2 --from-file=/etc/resolv.conf
使用目录建立:命令行
kubectl create configmap my-config-3 --from-file=test
编写configmap的yaml文件3d
kubectl create -f cm-test.yaml
使用configmap设置环境变量code
vim pod1.yaml
kubectl create -f pod1.yaml
vim pod2.yaml
kubectl create -f pod2.yaml
使用conigmap设置命令行参数blog
vim pod2.yaml
经过数据卷(volume)使用configmapip
vim pod3.yaml
vim pod4.yaml
kubectl create -f pod4.yaml
查看资源
修改
kubectl edit cm cm-test-config
等待几秒查看
数据已经修改为功并更新
configmap热更新后,并不会触发相关Pod的滚动更新,须要手动触发:
kubectl patch deployments.apps my-nginx --patch '{"spec": {"template": {"metadata": {"annotations": {"version/config": "20200625"}}}}}'
每次经过修改“version/config”来触发Pod滚动更新。
使用configmap挂载的env环境变量是不会更新的。
实验:
vim nginx.conf
kubectl create configmap nginxconf --from-file=nginx.conf
vim nginx.yaml
kubectl apply -f nginx.yaml
访问8000端口
修改端口(热更新)
kubectl edit cm nginxconf
访问修改后的端口
访问不成功
kubectl exec my-nginx-5f6dc9664-cmlz8 -- cat /etc/nginx/conf.d/nginx.conf | grep listen
查看发现数据热更新已经生效
这时候访问8080不成功,手动触发Pod滚动更新, 这样才能再次加载nginx.conf配置文件
从新访问(注意,这里的ip须要从新查看,pod滚动更新后会从新分配)