使用 kubectl 管理 Secret
本页向你展示如何使用 命令行工具来创建、编辑、管理和删除。 Kubernetes Secrets
你必须拥有一个 Kubernetes 的集群,同时你的 Kubernetes 集群必须带有 kubectl 命令行工具。 建议在至少有两个节点的集群上运行本教程,且这些节点不作为控制平面主机。 如果你还没有集群,你可以通过 Minikube 构建一个你自己的集群,或者你可以使用下面任意一个 Kubernetes 工具构建:
创建 Secret
Secret
对象用来存储敏感数据,如 Pod 用于访问服务的凭据。例如,为访问数据库,你可能需要一个 Secret 来存储所需的用户名及密码。
你可以通过在命令中传递原始数据,或将凭据存储文件中,然后再在命令行中创建 Secret。以下命令 将创建一个存储用户名 admin
和密码 S!B\*d$zDsb=
的 Secret。
执行以下命令:
你必须使用单引号 ''
转义字符串中的特殊字符,如 $
、\
、*
、=
和!
。否则,你的 shell 将会解析这些字符。
将凭据保存到文件:
echo -n 'admin' > ./username.txt
echo -n 'S!B\*d$zDsb=' > ./password.txt
在
kubectl
命令中传递文件路径:--from-file=./password.txt
默认键名为文件名。你也可以通过
--from-file=[key=]source
设置键名,例如:kubectl create secret generic db-user-pass \
--from-file=username=./username.txt \
--from-file=password=./password.txt
无论使用哪种方法,输出都类似于:
secret/db-user-pass created
检查 Secret 是否已创建:
输出类似于:
NAME TYPE DATA AGE
db-user-pass Opaque 2 51s
查看 Secret 的细节:
kubectl describe secret db-user-pass
输出类似于:
Name: db-user-pass
Namespace: default
Labels: <none>
Annotations: <none>
Type: Opaque
Data
====
password: 12 bytes
username: 5 bytes
查看你所创建的 Secret 内容
kubectl get secret db-user-pass -o jsonpath='{.data}'
输出类似于:
解码
password
数据:echo 'UyFCXCpkJHpEc2I9' | base64 --decode
输出类似于:
S!B\*d$zDsb=
注意:
这是一个出于文档编制目的的示例。实际上,该方法可能会导致包含编码数据的命令存储在 Shell 的历史记录中。任何可以访问你的计算机的人都可以找到该命令并对 Secret 进行解码。 更好的办法是将查看和解码命令一同使用。
kubectl get secret db-user-pass -o jsonpath='{.data.password}' | base64 --decode
编辑 Secret
你可以编辑一个现存的 Secret
对象,除非它是。 要想编辑一个 Secret,请执行以下命令:
kubectl edit secrets <secret-name>
要想删除一个 Secret,请执行以下命令:
kubectl delete secret db-user-pass
接下来
- 进一步阅读 Secret 概念
- 了解如何
- 了解如何使用 Kustomize 管理 Secret