使用 kubectl 管理 Secret Marathon

使用secret的基本流程:

  • 1.创建k8s集群
  • 2.创建管理的文件
  • 3.验证
  • 4.解码
  • 5.清理

集群创建忽略,从第2步开始,一起来熟悉下secret的管理流程。

一个 Secret 可以包含 Pod 访问数据库所需的用户凭证。

1.创建管理的文件

# 以文件形式, 
# 在这些命令中,-n 标志确保生成的文件在文本末尾不包含额外的换行符。 这一点很重要,因为当 kubectl 读取文件并将内容编码为 base64 字符串时,多余的换行符也会被编码。
echo -n "testName" > user.txt
echi -n "password" > pwd.txt

# 使用kubectlcreate secret命令打包文件成secret,并在API服务器上创建对象
kubectl create secret generic my-auth \
--from-file=user.txt
--from-file=pwd.txt

---输出
secret/my-auth created
---

默认密钥名称是文件名。 你可以选择使用 --from-file=[key=]source 来设置密钥名称。例如:

kubectl create secret generic my-auth \
  --from-file=username=username.txt \
  --from-file=password=password.txt

你还可以使用 --from-literal=<key>=<value> 标签提供 Secret 数据。 可以多次使用此标签,提供多个键值对。 请注意,特殊字符(例如:$,\,*,= 和 !)由你的 shell 解释执行,而且需要转义。
kubectl create secret generic my-auth \
  --from-literal=username=devuser \
  --from-literal=password='S!B\*d$zDsb='

2.验证secret

检查 secret 是否已创建:

kubectl get secret [-n mynamespace]
输出:

kubectl get secret -n elk
NAME                         TYPE                                  DATA   AGE
default-token-jxc92          kubernetes.io/service-account-token   3      2d23h
elastic-certificate-pem      Opaque                                1      2d23h
elastic-certificates         Opaque                                1      2d23h
elastic-credentials          Opaque                                2      2d23h
sh.helm.release.v1.es-c.v1   helm.sh/release.v1                    1      47h
sh.helm.release.v1.es-d.v1   helm.sh/release.v1                    1      42h
sh.helm.release.v1.es-m.v1   helm.sh/release.v1                    1      42h

查看secret的描述

kubectl describe secret secret-name [-n mynamespace]
输出:

kubectl describe secret elastic-credentials -n elk
Name:         elastic-credentials
Namespace:    elk
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
====
password:  13 bytes
username:  7 bytes

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

3.解码secret

要查看创建的 Secret 的内容,运行以下命令:

kubectl get secret db-user-pass -o jsonpath='{.data}'
输出类似于:

{"password":"MWYyZDFlMmU2N2Rm","username":"YWRtaW4="}
现在你可以解码 password 的数据:

echo 'MWYyZDFlMmU2N2Rm' | base64 --decode
输出类似于:

1f2d1e2e67df

4.清理

删除创建的 Secret:

kubectl delete secret db-user-pass

原文地址:https://www.cnblogs.com/davis12/p/15474721.html