k8s配置存儲(chǔ)(ConfigMap、Secret)
配置存儲(chǔ)
ConfigMap
ConfigMap是一種比較特殊的存儲(chǔ)卷,它的主要作用是用來存儲(chǔ)配置信息的。
創(chuàng)建configmap.yaml,內(nèi)容如下:
apiVersion: v1 kind: ConfigMap metadata: name: configmap namespace: dev data: info: | #這個(gè)|表示下面的參數(shù)信息都是info的 username:admin password:123456
接下來,使用此配置文件創(chuàng)建configmap
# 創(chuàng)建configmap [root@master ~]# kubectl create -f configmap.yaml # 查看configmap詳情 [root@master ~]# kubectl describe cm configmap -n dev

接下來創(chuàng)建一個(gè)pod-configmap.yaml,將上面創(chuàng)建的configmap掛載進(jìn)去
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 #名字要和上面的相同
創(chuàng)建并查看
# 創(chuàng)建pod [root@master ~]# kubectl create -f pod-configmap.yaml # 查看pod [root@master ~]# kubectl get pod pod-configmap -n dev #進(jìn)入容器 [root@master ~]# kubectl exec -it pod-configmap -n dev -- bash root@pod-configmap:/# ls /configmap/config root@pod-configmap:/# cat /configmap/config/info

# 可以看到映射已經(jīng)成功,每個(gè)configmap都映射成了一個(gè)目錄 # key--->文件 value---->文件中的內(nèi)容 # 此時(shí)如果更新configmap的內(nèi)容, 容器中的值也會(huì)動(dòng)態(tài)更新
測試動(dòng)態(tài)更新
#修改密碼為666666 [root@master ~]# kubectl edit cm configmap -n dev 再次查看內(nèi)容(同步數(shù)據(jù)需要點(diǎn)時(shí)間) [root@master ~]# kubectl exec -it pod-configmap -n dev -- cat /configmap/config/info

注:使用kubectl create configmap 命令可直接生成一個(gè)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創(chuàng)建一個(gè)yaml文件,使用:r/配置文件路徑(如 :r /var/webconf/ nginx.conf) 將配置文件的內(nèi)容導(dǎo)入,然后調(diào)整格式間距即可

Secret
在kubernetes中,還存在一種和ConfigMap非常類似的對象,稱為Secret對象。它主要用于存儲(chǔ)敏感信息,例如密碼、秘鑰、證書等等。
1) 首先使用base64對數(shù)據(jù)進(jìn)行編碼
注:base64非常容易被破解,防君子而已
[root@master ~]# echo -n 'admin' | base64 #準(zhǔn)備username YWRtaW4= [root@master ~]# echo -n '123456' | base64 #準(zhǔn)備password MTIzNDU2
2) 接下來編寫secret.yaml,并創(chuàng)建Secret
apiVersion: v1 kind: Secret metadata: name: secret namespace: dev type: Opaque data: username: YWRtaW4= password: MTIzNDU2
創(chuàng)建并查看
# 創(chuàng)建secret [root@master ~]# kubectl create -f secret.yaml # 查看secret詳情 [root@master ~]# kubectl describe secret secret -n dev

3) 創(chuàng)建pod-secret.yaml,將上面創(chuàng)建的secret掛載進(jìn)去:
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
創(chuàng)建并查看
# 創(chuàng)建pod [root@master ~]# kubectl create -f pod-secret.yaml # 查看pod [root@master ~]# kubectl get pod pod-secret -n dev # 進(jìn)入容器,查看secret信息,發(fā)現(xiàn)已經(jīng)自動(dòng)解碼了 [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

至此,已經(jīng)實(shí)現(xiàn)了利用secret實(shí)現(xiàn)了信息的編碼。
參考
黑馬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
浙公網(wǎng)安備 33010602011771號