codecamp

Kubernetes 使用Kustomize管理Secret

使用 Kustomize 管理 Secret

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

在开始之前

你必须拥有一个 Kubernetes 的集群,同时你的 Kubernetes 集群必须带有 kubectl 命令行工具。 建议在至少有两个节点的集群上运行本教程,且这些节点不作为控制平面主机。 如果你还没有集群,你可以通过 Minikube 构建一个你自己的集群,或者你可以使用下面任意一个 Kubernetes 工具构建:

创建 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。

检查创建的 Secret 

你可以检查刚才创建的 Secret:

kubectl get secrets

输出类似于:

NAME                             TYPE                                  DATA      AGE
db-user-pass-96mffmfh4k          Opaque                                2         51s

你可以看到 Secret 的描述:

kubectl describe secrets/db-user-pass-96mffmfh4k

输出类似于:

Name:            db-user-pass-96mffmfh4k
Namespace:       default
Labels:          <none>
Annotations:     <none>

Type:            Opaque

Data
====
password.txt:    12 bytes
username.txt:    5 bytes

kubectl get​ 和 ​kubectl describe​ 命令默认不显示 ​Secret ​的内容。 这是为了防止 ​Secret ​被意外暴露给旁观者或存储在终端日志中。

清理 

删除你创建的 Secret:

kubectl delete secret db-user-pass-96mffmfh4k


Kubernetes 使用配置文件管理Secret
Kubernetes 为容器设置启动时要执行的命令和参数
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Kubernetes 管理集群

Kubernetes Service

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }