【K8s任务】使用 Kustomize 管理 Secret

参考:https://kubernetes.io/zh/docs/tasks/configmap-secret/managing-secret-using-kustomize/

从 kubernetes v1.14 开始,kubectl 支持使用 Kustomize 管理对象。 Kustomize 提供了资源生成器(Generators)来创建 Secret 和 ConfigMap。 Kustomize 生成器应该在某个目录的 kustomization.yaml 文件中指定。 生成 Secret 后,你可以使用 kubectl apply 在 API 服务器上创建该 Secret。

创建 Kustomization 文件

你可以在 kustomization.yaml 中定义 secreteGenerator,并在定义中引用其他现成的文件,生成 Secret。 例如:下面的 kustomization 文件 引用了 ./username.txt 和 ./password.txt 文件:

secretGenerator:
- name: db-user-pass
  files:
  - username.txt
  - password.txt

你也可以在 kustomization.yaml 文件中指定一些字面量定义 secretGenerator。 例如:下面的 kustomization.yaml 文件中包含了 username 和 password 两个字面量:

secretGenerator:
- name: db-user-pass
  literals:
  - username=admin
  - password=1f2d1e2e67df

你也可以使用 .env 文件在 kustomization.yaml 中定义 secretGenerator。 例如:下面的 kustomization.yaml 文件从 .env.secret 文件获取数据。

secretGenerator:
- name: db-user-pass
  envs:
  - .env.secret

注意,上面两种情况,你都不需要使用 base64 编码。

创建 Secret

使用 kubectl apply 命令应用包含 kustomization.yaml 文件的目录创建 Secret。

kubectl apply -k .

输出类似于:

secret/db-user-pass-96mffmfh4k created

请注意,生成 Secret 时,Secret 的名称最终是由 name 字段和数据的哈希值拼接而成。 这将保证每次修改数据时生成一个新的 Secret。

posted @ 2021-08-05 13:44  Varden  阅读(301)  评论(0编辑  收藏  举报