K8s configmap配置
前提基于分布式的场景需求,应用都是会存在多个节点上的,对于随着应用的增加会带来很大的不便利,如果配置发生更改就要进行重新提交git、打包、分发,分发上线的工作就变得繁杂和沉重开源本身也提供了很多的解决方案,比如diamond、apollo、disconf等等,而k8s就是configmapconfigmap以非机密性的数据形式提供给Pod,实现分布式环境对配置信息的需求存储格式:K/V键值对使用方
·
前提
基于分布式的场景需求,应用都是会存在多个节点上的,对于随着应用的增加会带来很大的不便利,如果配置发生更改就要进行重新提交git、打包、分发,分发上线的工作就变得繁杂和沉重
开源本身也提供了很多的解决方案,比如diamond、apollo、disconf等等,而k8s就是configmap
configmap
以非机密性的数据形式提供给Pod,实现分布式环境对配置信息的需求
- 存储格式:K/V键值对
- 使用方式:环境变量和挂载(volumes)
- 创建方式:命令行创建和配置清单
存储格式
-
server.conf: configmap
-
|+ :表示段落块,因为配置信息往往不是单行值,而是一个段的信息
创建方式
命令行创建
kubectl create configmap test-configmap --from-file=nginx.conf
#可以指定文件、环境变量、字符(常见肯定是配置文件形式),文件名就是key名称
配置清单创建
apiVersion: v1
kind: ConfigMap
metadata:
name: test1-configmap
data:
index.html: |+
test
1
2
3
4
7
使用方式(其实分为4种)
- 容器 entrypoint 的命令行参数
- 容器的环境变量
- 缺点:导致信息无法变更或者是对于程序调用子进程是无法读取到父环境变量
- 挂载(volumes)
- 当已经存储于卷中被使用的 configmap 被更新时,被映射的键也将终将被更新,由kubelet 在周期性同步时检查更新
- 编写代码在 Pod 中运行,使用 Kubernetes API 来读取 ConfigMap
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.19
volumeMounts:
- name: test
mountPath: /usr/share/nginx/html
volumes:
- name: test
configMap:
name: test1-configmap
查看容器文件是否被替换成功
注意点就是挂载后的文件名就是configmap下data定义的key名称,因为我要替换之前的index.html,所以key就要定义为index.html
参考:https://v1-19.docs.kubernetes.io/zh/docs/concepts/configuration/configmap/#using-configmaps
更多推荐
已为社区贡献15条内容
所有评论(0)