使用 Kustomize 管理密钥

使用 kustomization.yaml 文件创建 Secret 对象。

kubectl 支持使用 Kustomize 对象管理工具 来管理 Secrets 和 ConfigMaps。您可以使用 Kustomize 创建一个资源生成器,该生成器会生成一个 Secret,您可以使用 kubectl 将其应用到 API 服务器。

在您开始之前

您需要拥有一个 Kubernetes 集群,并且 kubectl 命令行工具必须配置为与您的集群通信。建议在至少有两个节点的集群上运行本教程,这些节点不充当控制平面主机。如果您还没有集群,可以使用 minikube 创建一个,或者使用以下 Kubernetes playground 中的其中一个

创建一个 Secret

您可以通过在 kustomization.yaml 文件中定义一个 secretGenerator 来生成一个 Secret,该生成器引用其他现有文件、.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 文件

要创建 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 管理 Secrets使用 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:修复 managing-secret-using-kustomize.md 中的错别字 (61746adc09)