Kubernetes學習記錄(七):Secret和Configmap
阿新 • • 發佈:2022-04-09
1. Secret
加密資料並存放在etcd中,讓pod內容器以掛載volume方式訪問
應用場景:憑據、使用者名稱密碼、https證書、docker倉庫認證
pod使用secret的兩種方式:
- 變數注入
- 掛載
1.1 secret使用
首先建立一個secret來儲存一個常規的使用者名稱和密碼
如果我們要存放一個使用者名稱和密碼的話,也不建議直接在YAML檔案中體現,一般而言會做一個簡單的編碼,這樣在檢視資源配置的時候不至於直接輸密碼
echo -n 'admin' | base64 echo -n '1f2d1e2e67df' | base64
然後編寫一個最簡單的Secret資源,可以把data欄位中的值理解為key-value形式
建立資源
kubectl apply -f secret_var.yaml
如果想要以變數注入的形式來讓pod使用這個使用者名稱和密碼,我們需要在建立pod的YAML檔案中選擇使用env欄位
valueFrom指明這個變數值來自於哪個資源,secretKeyRef表示這個值來自於名為mysecret的secret資源,key為username
這樣就完成了username和password的變數注入,而在容器中就可以使用SECRET_USERNAME和SECRET_PASSWORD
以掛載的方式使用secret,需要在建立pod的YAML檔案中宣告要使用的secret資源
這樣一來secret所儲存的使用者名稱和密碼都會被掛載到pod內的/etc/foo目錄下,容器只需要讀取這個目錄下的檔案就可以完成配置
檔名就是key的名字,即username
2. Configmap
Configmap和Secret的使用幾乎是一樣的,不過其應用場景是多用於配置資訊的分發
3. 應用程式如何動態更新配置
configmap和secret修改了,如何在pod中實現更新?
- 重建pod
- 應用程式實現watch etcd中的配置檔案,發現變化更新配置資訊
- 使用sidecar的邏輯監聽配置更新,啟用一個輔助容器來監聽
如果脫離k8s,可以採用配置中心的方式