使用 Kustomize 管理密碼

使用 kustomization.yaml 檔案建立密碼物件。

kubectl 支援使用 Kustomize 物件管理工具來管理密碼和 ConfigMap。您可以使用 Kustomize 建立資源產生器,以產生您可以套用至 API 伺服器的密碼,方法是使用 kubectl

準備開始

您需要有一個 Kubernetes 叢集,而且必須設定 kubectl 命令列工具以與您的叢集通訊。建議在至少有兩個節點且未充當控制平面主機的叢集上執行本教學課程。如果您還沒有叢集,可以使用 minikube 建立一個叢集,或者您可以使用下列 Kubernetes 實驗環境

建立密碼

您可以透過在 kustomization.yaml 檔案中定義 secretGenerator 來產生密碼,該檔案會參考其他現有檔案、.env 檔案或常值。例如,下列指示會為使用者名稱 admin 和密碼 1f2d1e2e67df 建立 kustomization 檔案。

建立 kustomization 檔案


secretGenerator:
- name: database-creds
  literals:
  - username=admin
  - password=1f2d1e2e67df

  1. 將憑證儲存在檔案中。檔案名稱是密碼的金鑰

    echo -n 'admin' > ./username.txt
    echo -n '1f2d1e2e67df' > ./password.txt
    

    -n 旗標確保檔案結尾沒有換行字元。

  2. 建立 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.yamlkustomization.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 物件

編輯密碼

  1. 在您的 kustomization.yaml 檔案中,修改資料,例如 password

  2. 套用包含 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

接下來呢?

上次修改時間為 2024 年 7 月 19 日上午 9:39 PST:修正 managing-secret-using-kustomize.md 中的錯字 (61746adc09)