0
点赞
收藏
分享

微信扫一扫

Kubernetes ConfigMap对应用程序配置


管理应用程序配置(configmap)


创建ConfigMap后, 数据实际会存储在K8s中Etcd,然后通过创建Pod时引用该数据



应用场景:应用程序配置



Pod使用configmap数据有两种方式:



• 变量注入



• 数据卷挂载


[root@k8s-master ~]# cat configmap.yml 
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
abc: "123"
cde: "456"

redis.properties: |
port: 6379
host: localhost


[root@k8s-master ~]# kubectl apply -f configmap.yml
configmap/app-config created


[root@k8s-master ~]# kubectl get cm
NAME DATA AGE
app-config 3 46s
[root@k8s-master ~]# kubectl describe cm app-config
Name: app-config
Namespace: default
Labels: <none>
Annotations: <none>

Data
====
abc:
----
123
cde:
----
456
redis.properties:
----
port: 6379
host: localhost

Events: <none>

这里就将环境变量和配置文件都保存在k8s当中了。现在就是部署应用可以读取这个配置 

[root@k8s-master ~]# cat configmap-pod.yml 
apiVersion: v1
kind: Pod
metadata:
name: app-config-demo
spec:
containers:
- name: demo
image: nginx
env:
- name: XYZ
value: "666"
- name: ABCD
valueFrom:
configMapKeyRef:
name: app-config
key: abc
- name: CDEF
valueFrom:
configMapKeyRef:
name: app-config
key: cde
volumeMounts:
- name: config
mountPath: "/config"
readOnly: true
volumes:
- name: config
configMap:
name: app-config
items:
- key: "redis.properties"
path: "redis.config"

[root@k8s-master ~]# kubectl apply -f configmap-pod.yml
pod/app-config-demo created

- key: "redis.properties" 这是是configmap里面的key

path: "redis.config" 挂载配置文件的文件名,也就是使用容器卷挂载在某个目录下,这个文件名就是path对应的值


[root@k8s-master ~]# kubectl exec -it app-config-demo -- bash
root@app-config-demo:/# ls /config/
redis.config
root@app-config-demo:/# cat /config/redis.config
port: 6379
host: localhost
root@app-config-demo:/# echo $XYZ
666
root@app-config-demo:/# echo $ABCD
123
root@app-config-demo:/# echo $CDEF
456

 

应用程序如何动态更新配置

应用程序动态更新配置方案:没有完善的自动化机制

Configmap帮你存储了配置文件,也挂载在对应的目录下面,但是confimap不能帮你实现热加载

  • 当ConfigMap发生变更时,应用程序自动感知动态加载(需要程序自身支持)(在pod当中专门一个容器监听配置文件有没有更改,也就是通过数据卷挂载在自己的目录下去探测有没有更改,如果有变化就通知程序进行加载)
  • 触发滚动更新,即重启服务 当pod重建的时候就会去挂载configmap,也就是使用新的配置文件了,比如你明天升级,就可以将文件更新一下了,等明天更新就可以使用新的配置文件了
举报

相关推荐

0 条评论