使用 Kustomize 管理 Secret

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

kubectl 支援使用 Kustomize 物件管理工具 管理 Secret 和 ConfigMap。你可以使用 Kustomize 建立一個 資源生成器,該生成器會生成一個 Secret,然後你可以使用 kubectl 將其應用到 API 伺服器。

準備工作

你需要有一個 Kubernetes 叢集,並且 kubectl 命令列工具已配置為與你的叢集通訊。建議在至少有兩個不充當控制平面主機的節點的叢集上執行本教程。如果你還沒有叢集,你可以使用 minikube 建立一個,或者你可以使用以下 Kubernetes 演練場之一

建立 Secret

你可以透過在 kustomization.yaml 檔案中定義一個 secretGenerator 來生成 Secret,該生成器引用其他現有檔案、.env 檔案或字面值。例如,以下說明為使用者名稱 admin 和密碼 1f2d1e2e67df 建立一個 kustomization 檔案。

建立 kustomization 檔案


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

  1. 將憑據儲存在檔案中。檔名是 Secret 的鍵

    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 檔案

要建立 Secret,請應用包含 kustomization 檔案的目錄

kubectl apply -k <directory-path>

輸出類似於:

secret/database-creds-5hdh7hhgfk created

生成 Secret 時,Secret 名稱是透過對 Secret 資料進行雜湊處理並將雜湊值附加到名稱而建立的。這確保了每次修改資料時都會生成新的 Secret。

要驗證 Secret 是否已建立並解碼 Secret 資料,

kubectl get -k <directory-path> -o jsonpath='{.data}' 

輸出類似於:

{ "password": "MWYyZDFlMmU2N2Rm", "username": "YWRtaW4=" }
echo 'MWYyZDFlMmU2N2Rm' | base64 --decode

輸出類似於:

1f2d1e2e67df

有關更多資訊,請參閱使用 kubectl 管理 Secret使用 Kustomize 對 Kubernetes 物件進行宣告式管理

編輯 Secret

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

  2. 應用包含 kustomization 檔案的目錄

    kubectl apply -k <directory-path>
    

    輸出類似於:

    secret/db-user-pass-6f24b56cc8 created
    

編輯後的 Secret 作為新的 Secret 物件建立,而不是更新現有的 Secret 物件。你可能需要更新 Pod 中對 Secret 的引用。

清理

要刪除 Secret,請使用 kubectl

kubectl delete secret db-user-pass

下一步

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