k8s存储资源ConfigMap与Secret
ConfigMapConfigMap是一个K8s存储资源,用于存储应用程序配置文件。Pod使用configmap数据有两种方式:• 变量注入• 数据卷挂载示例:示例先创建一个configMapvi configMap.yamlapiVersion: v1kind: ConfigMapmetadata:name: configmap-demodata:abc: "123"cde: "456"redi
·
目录
ConfigMap
ConfigMap是一个K8s存储资源,用于存储应用程序配置文件。
Pod使用configmap数据有两种方式:
• 变量注入
• 数据卷挂载
示例:
示例
先创建一个configMap
vi configMap.yaml
apiVersion: v1kind: ConfigMapmetadata:name: configmap-demodata:abc: "123"cde: "456"redis-config: |port: 6379host: 192.168.31.10{'aaa': 123}kubectl apply -f configMap.yamlkubectl get configmap
可以看到这个configmap上面对应有有三个数据
创建测试pod引用
vi pod.yaml
apiVersion: v1kind: Podmetadata:name: configmap-demo-podspec:containers:- name: webimage: nginxenv:- name: ABCDvalueFrom:configMapKeyRef:name: configmap-demokey: abc- name: CDEFvalueFrom:configMapKeyRef:name: configmap-demokey: cdevolumeMounts:- name: configmountPath: "/config"readOnly: truevolumes:- name: configconfigMap:name: configmap-demoitems:- key: "redis-config"path: "redis.properties"
kubectl apply -f pod.yaml
容器运行成功后进入容器
可以看到写入configmap的变量都写入了
挂载数据也挂载完成
Secret
Secret与ConfigMap类似,区别在于Secret主要存储敏感数据。 可存储以下三种数据类型:
• docker-registry(kubernetes.io/dockerconfigjson):存储镜像仓库认证信息
• generic(Opaque):存储密码、密钥等(yaml里数据需经过base64编码)
• tls(kubernetes.io/tls):存储TLS证书
secret用来存加密数据,所以其中数据都有经过加密算法加密过,
示例
先将密码base64脱敏
echo -n 'aliang' |base64
写一个测试yaml
vi secret.yaml
apiVersion: v1kind: Secretmetadata:name: db-user-passtype: Opaquedata:username: YWxpYW5npassword: MTIzNDU2
执行
查看k8s内所有secret存储
kubectl get secret
创建pod引用此secret
vi pod-secret.yaml
apiVersion: v1kind: Podmetadata:name: secret-demo-podspec:containers:- name: demoimage: nginxenv:- name: USERvalueFrom:secretKeyRef:name: db-user-passkey: username- name: PASSvalueFrom:secretKeyRef:name: db-user-passkey: passwordvolumeMounts:- name: configmountPath: /configreadOnly: truevolumes:- name: configsecret:secretName: db-user-passitems:- key: usernamepath: my-username
执行
进入pod测试
注意:变量都在env中
成功
其他方式创建configmap和secret
cronjob是本地的文件,可以是其他的
kubectl create configmap test --from-file=yaml666=CronJob.yaml
可以看到test创建成功
打开test的详细信息,可以看见此yaml已经被引用
应用程序动态更新配置方案:
即当程序配置文件更新后,成功需要响应新配置文件的话
• 当ConfigMap发生变更时,应用程序自动感知动态加载(需要程序自身支持)
• 触发滚动更新,即重启服务
• 给程序预留一个接口,用于通知动态加载配置(Sidecar),例如nginx -s reload
更多推荐
已为社区贡献13条内容
所有评论(0)