Kubernetes ConfigMap对应用程序配置

本文详细介绍了Kubernetes中的ConfigMap如何用于管理应用程序配置,包括创建ConfigMap、通过变量注入和数据卷挂载在Pod中使用配置,以及探讨了应用程序如何动态更新配置的方法。通过ConfigMap,配置文件得以存储并挂载到Pod中,但热加载通常需要应用程序自身的支持。当ConfigMap更新时,可以通过滚动更新Pod来应用新的配置。
摘要由CSDN通过智能技术生成
管理应用程序配置(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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值