k8s之 应用程序配置文件存储ConfigMap和Secret
Posted Linux蛋蛋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s之 应用程序配置文件存储ConfigMap和Secret相关的知识,希望对你有一定的参考价值。
作用:创建ConfigMap后,数据实际会存储再K8S中etcd集群中,然后通过创建pod时引用该数据。
应用场景: 应用程序配置
Pod使用configmap数据有两种:
1.变量注入
2.数据卷挂载
具体用法如下
1.0创建变量值写入etcd cat configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: game-demo #变量名称
data:
abc: "123" #变量1
cde: "456" #变量2
redis.properties: | #变量3 |后面可以跟多个值
port: 6379
host: 192.168.31.10
kubectl apply -f configmap.yaml
1.1 检测是否创建成功
2.0创建一个应用pod并引用变量
cat map.yaml
apiVersion: v1
kind: Pod
metadata:
name: configmap-demo-pod
spec:
containers:
- name: demo
image: nginx
env:
- name: zhangsan
valueFrom:
configMapKeyRef:
name: configmap-demp # 这个值来自 ConfigMap
key: abc # 需要取值的key键
- name: lisi
valueFrom:
configMapKeyRef:
name: configmap-demp
key: cde
volumeMounts:
- name: config
mountPath: "/config"
readOnly: true
volumes:
- name: config
configMap:
name: configmap-demp #数据卷形式挂载,定义读取哪个configmap
items:
- key: "redis.properties" #key
path: "redis.properties" #容器目录
测试
0.1 说明成功引用了刚才创建的变量,变量注入
volumes:
- name: config
configMap:
name: configmap-demp #数据卷形式挂载,定义读取哪个configmap
items:
- key: "redis.properties" #key
path: "redis.properties" #容器目录
数据卷挂载也成功将key写入容器内
验证成功
应用程序配置文件存储:Secret
与configmap类似,区别在于secret主要存储敏感数据,所有的数据要经过base64编码
kubectl crreate secret 支持三种数据类型:
docker-registry:存储镜像仓库认证信息
generic: 从文件目录或者字符串创建。例如存储用户名密码
tls:存储证书,例如https证书
1创建应用pod
1.1生成用户密码的加密字符串
[root@CKA-master ~]# echo -n 'zhangsan' |base64
emhhbmdzYW4=
[root@CKA-master ~]# echo -n 'hello123' |base64
aGVsbG8xMjM=
1.2 编写pod
以上是关于k8s之 应用程序配置文件存储ConfigMap和Secret的主要内容,如果未能解决你的问题,请参考以下文章
k8s 实践经验配置存储之 Configmap & secret