k8s配置儲存(ConfigMap、Secret)
阿新 • • 發佈:2022-12-05
配置儲存
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