使用 Kustomize 管理密碼
kubectl
支援使用 Kustomize 物件管理工具來管理密碼和 ConfigMap。您可以使用 Kustomize 建立資源產生器,以產生您可以套用至 API 伺服器的密碼,方法是使用 kubectl
。
準備開始
您需要有一個 Kubernetes 叢集,而且必須設定 kubectl 命令列工具以與您的叢集通訊。建議在至少有兩個節點且未充當控制平面主機的叢集上執行本教學課程。如果您還沒有叢集,可以使用 minikube 建立一個叢集,或者您可以使用下列 Kubernetes 實驗環境
建立密碼
您可以透過在 kustomization.yaml
檔案中定義 secretGenerator
來產生密碼,該檔案會參考其他現有檔案、.env
檔案或常值。例如,下列指示會為使用者名稱 admin
和密碼 1f2d1e2e67df
建立 kustomization 檔案。
注意
密碼的stringData
欄位不適用於伺服器端套用。建立 kustomization 檔案
secretGenerator:
- name: database-creds
literals:
- username=admin
- password=1f2d1e2e67df
將憑證儲存在檔案中。檔案名稱是密碼的金鑰
echo -n 'admin' > ./username.txt echo -n '1f2d1e2e67df' > ./password.txt
-n
旗標確保檔案結尾沒有換行字元。建立
kustomization.yaml
檔案secretGenerator: - name: database-creds files: - username.txt - password.txt
您也可以透過提供 .env
檔案在 kustomization.yaml
檔案中定義 secretGenerator。例如,下列 kustomization.yaml
檔案從 .env.secret
檔案中提取資料
secretGenerator:
- name: db-user-pass
envs:
- .env.secret
在所有情況下,您都不需要以 base64 編碼值。YAML 檔案的名稱必須是 kustomization.yaml
或 kustomization.yml
。
套用 kustomization 檔案
若要建立密碼,請套用包含 kustomization 檔案的目錄
kubectl apply -k <directory-path>
輸出類似於
secret/database-creds-5hdh7hhgfk created
產生密碼時,密碼名稱是透過雜湊密碼資料並將雜湊值附加到名稱來建立的。這可確保每次修改資料時都會產生新的密碼。
若要驗證是否已建立密碼並解碼密碼資料,
kubectl get -k <directory-path> -o jsonpath='{.data}'
輸出類似於
{ "password": "MWYyZDFlMmU2N2Rm", "username": "YWRtaW4=" }
echo 'MWYyZDFlMmU2N2Rm' | base64 --decode
輸出類似於
1f2d1e2e67df
如需更多資訊,請參閱使用 kubectl 管理密碼和使用 Kustomize 宣告式管理 Kubernetes 物件。
編輯密碼
在您的
kustomization.yaml
檔案中,修改資料,例如password
。套用包含 kustomization 檔案的目錄
kubectl apply -k <directory-path>
輸出類似於
secret/db-user-pass-6f24b56cc8 created
編輯過的 Secret 會被建立為新的 Secret
物件,而不是更新現有的 Secret
物件。您可能需要更新在 Pods 中對 Secret 的參考。
清理
若要刪除 Secret,請使用 kubectl
kubectl delete secret db-user-pass
接下來呢?
- 深入瞭解 Secret 概念
- 瞭解如何使用 kubectl 管理 Secret
- 瞭解如何使用組態檔管理 Secret