1. ConfigMap配置管理
1.1 ConfigMap作用及使用场景
- ConfigMap用于保存配置数据,以键值对形式存储
- ConfigMap 资源提供了向 Pod 注入配置数据的方法
- 旨在让镜像和配置文件解耦,以便实现镜像的可移植性和可复用性
典型的使用场景 - 填充环境变量的值
- 设置容器内的命令行参数
- 填充卷的配置文件
1.2 ConfigMap的创建
创建方式
- 使用字面值创建
- 使用文件创建
- 使用目录创建
- 编写configmap的yaml文件创建
字面值创建
kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2
使用文件创建
kubectl create configmap my-config-2 --from-file=/etc/resolv.conf
使用目录创建
kubectl create configmap my-config-3 --from-file=test
编写configmap的yaml文件
kubectl create -f cm-test.yaml
1.3 如何使用configmap
- 通过环境变量的方式直接传递给pod
- 通过在pod的命令行下运行的方式
- 作为volume的方式挂载到pod内
使用configmap设置环境变量
vim pod1.yaml
kubectl create -f pod1.yaml
vim pod2.yaml
kubectl create -f pod2.yaml
使用conigmap设置命令行参数
vim pod2.yaml
通过数据卷(volume)使用configmap
vim pod3.yaml
1.4 configmap热更新
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环境变量是不会更新的
1.5 实验
vim nginx.conf
kubectl create configmap nginxconf --from-file=nginx.conf
vim nginx.yaml
kubectl apply -f nginx.yaml
访问8080端口
修改端口(热更新)
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滚动更新后会重新分配)