十四、管理应用程序配置

一、ConfigMap

二、Secret

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


一、ConifgMap

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

应用场景:应用程序配置

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

a、变量注入:将键值数据类型注入到容器系统变量,程序读取系统变量获取到值

b、数据卷挂载:将数据挂载到容器中某个目录,程序读取这个文件,如果是配置文件,程序默认有配置文件目录,那就直接挂载到指定的目录即可

示例:

configmap.yaml

两种数据类型:键值;多行数据。

# kubectl apply -f configmap.yaml

# kubectl get configmap


键值:ABCD->abc->123;CDEF->cde->456;redis挂载方式

二、Secret

与configmap类似,区别在于Secret主要存储敏感数据,所有的数据要经过base64编码。

应用场景:凭据

kubectl create secret支持三种数据类型:

a、docker-registry(kubernetes.io/dockerconfigjson):存储镜像仓库认证信息

b、generic(Opaque):存储密码、秘钥等

c、tls(kubernetes.io/tls):存储TLS证书

账号密码示例;


Pod使用Secret数据与Configmap方式一样

# kubectl apply -f secret.yaml

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

应用程序正在运行,如果修改配置文件,会不会立即生效:

a、热启,通过程序加载

b、一般都是冷处理,重启应用

c、给程序预留一个接口,用于通知动态加载配置,如:nginx -s reload

d、采用配置管理系统。如:apollo、disconf等

应用程序动态更新配置方案:

a、当ConfigMap发生变更时,应用程序自动感知动态加载(需要程序自身支持)

b、触发滚动更新,即重启服务

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容