k8s配置存储(ConfigMap、Secret)
配置存储
ConfigMap
ConfigMap是一种比较特殊的存储卷,它的主要作用是用来存储配置信息的。
创建configmap.yaml,内容如下:
apiVersion: v1 kind: ConfigMap metadata: name: configmap namespace: dev data: info: | #这个|表示下面的参数信息都是info的 username:admin password:123456
接下来,使用此配置文件创建configmap
# 创建configmap [root@master ~]# kubectl create -f configmap.yaml # 查看configmap详情 [root@master ~]# kubectl describe cm configmap -n dev
接下来创建一个pod-configmap.yaml,将上面创建的configmap挂载进去
apiVersion: v1 kind: Pod metadata: name: pod-configmap namespace: dev spec: containers: - name: nginx image: nginx:1.17.1 volumeMounts: # 将configmap挂载到目录 - name: config mountPath: /configmap/config volumes: # 引用configmap - name: config configMap: name: configmap #名字要和上面的相同
创建并查看
# 创建pod [root@master ~]# kubectl create -f pod-configmap.yaml # 查看pod [root@master ~]# kubectl get pod pod-configmap -n dev #进入容器 [root@master ~]# kubectl exec -it pod-configmap -n dev -- bash root@pod-configmap:/# ls /configmap/config root@pod-configmap:/# cat /configmap/config/info
# 可以看到映射已经成功,每个configmap都映射成了一个目录 # key--->文件 value---->文件中的内容 # 此时如果更新configmap的内容, 容器中的值也会动态更新
测试动态更新
#修改密码为666666 [root@master ~]# kubectl edit cm configmap -n dev 再次查看内容(同步数据需要点时间) [root@master ~]# kubectl exec -it pod-configmap -n dev -- cat /configmap/config/info
注:使用kubectl create configmap 命令可直接生成一个configmap kubectl create configmap NAME [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run=server|client|none] kubectl create configmap nginx-conf --from-file=/var/webconf/nginx.conf
也可使用--dry-run生成yaml文件 也可自己vim创建一个yaml文件,使用:r/配置文件路径(如 :r /var/webconf/ nginx.conf) 将配置文件的内容导入,然后调整格式间距即可
Secret
在kubernetes中,还存在一种和ConfigMap非常类似的对象,称为Secret对象。它主要用于存储敏感信息,例如密码、秘钥、证书等等。
1) 首先使用base64对数据进行编码
注:base64非常容易被破解,防君子而已
[root@master ~]# echo -n 'admin' | base64 #准备username YWRtaW4= [root@master ~]# echo -n '123456' | base64 #准备password MTIzNDU2
2) 接下来编写secret.yaml,并创建Secret
apiVersion: v1 kind: Secret metadata: name: secret namespace: dev type: Opaque data: username: YWRtaW4= password: MTIzNDU2
创建并查看
# 创建secret [root@master ~]# kubectl create -f secret.yaml # 查看secret详情 [root@master ~]# kubectl describe secret secret -n dev
3) 创建pod-secret.yaml,将上面创建的secret挂载进去:
apiVersion: v1 kind: Pod metadata: name: pod-secret namespace: dev spec: containers: - name: nginx image: nginx:1.17.1 volumeMounts: # 将secret挂载到目录 - name: config mountPath: /secret/config volumes: - name: config secret: secretName: secret
创建并查看
# 创建pod [root@master ~]# kubectl create -f pod-secret.yaml # 查看pod [root@master ~]# kubectl get pod pod-secret -n dev # 进入容器,查看secret信息,发现已经自动解码了 [root@master ~]# kubectl exec -it pod-secret -n dev -- bash root@pod-secret:/# ls /secret/config/ root@pod-secret:/# cat /secret/config/password root@pod-secret:/# cat /secret/config/username
至此,已经实现了利用secret实现了信息的编码。
参考
黑马B站k8s课程https://www.bilibili.com/video/BV1Qv41167ck/
https://gitee.com/yooome/golang/blob/main/k8s%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B-%E8%B0%83%E6%95%B4%E7%89%88/k8s%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B.md
https://www.yuque.com/fairy-era/yg511q/xyqxge