使用 kubectl 管理 Secret

    本页向你展示如何使用 命令行工具来创建、编辑、管理和删除。 Kubernetes Secrets

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

    创建 Secret

    Secret 对象用来存储敏感数据,如 Pod 用于访问服务的凭据。例如,为访问数据库,你可能需要一个 Secret 来存储所需的用户名及密码。

    你可以通过在命令中传递原始数据,或将凭据存储文件中,然后再在命令行中创建 Secret。以下命令 将创建一个存储用户名 admin 和密码 S!B\*d$zDsb= 的 Secret。

    执行以下命令:

    你必须使用单引号 '' 转义字符串中的特殊字符,如 $\*=! 。否则,你的 shell 将会解析这些字符。

    1. 将凭据保存到文件:

      1. echo -n 'admin' > ./username.txt
      2. echo -n 'S!B\*d$zDsb=' > ./password.txt
    2. kubectl 命令中传递文件路径:

      1. --from-file=./password.txt

      默认键名为文件名。你也可以通过 --from-file=[key=]source 设置键名,例如:

      1. kubectl create secret generic db-user-pass \
      2. --from-file=username=./username.txt \
      3. --from-file=password=./password.txt

    无论使用哪种方法,输出都类似于:

    1. secret/db-user-pass created

    检查 Secret 是否已创建:

    输出类似于:

    1. NAME TYPE DATA AGE
    2. db-user-pass Opaque 2 51s

    查看 Secret 的细节:

    1. kubectl describe secret db-user-pass

    输出类似于:

    1. Name: db-user-pass
    2. Namespace: default
    3. Labels: <none>
    4. Annotations: <none>
    5. Type: Opaque
    6. Data
    7. ====
    8. password: 12 bytes
    9. username: 5 bytes
    1. 查看你所创建的 Secret 内容

      1. kubectl get secret db-user-pass -o jsonpath='{.data}'

      输出类似于:

    2. 解码 password 数据:

      1. echo 'UyFCXCpkJHpEc2I9' | base64 --decode

      输出类似于:

      1. S!B\*d$zDsb=

      注意:

      这是一个出于文档编制目的的示例。实际上,该方法可能会导致包含编码数据的命令存储在 Shell 的历史记录中。任何可以访问你的计算机的人都可以找到该命令并对 Secret 进行解码。 更好的办法是将查看和解码命令一同使用。

      1. kubectl get secret db-user-pass -o jsonpath='{.data.password}' | base64 --decode

    编辑 Secret

    你可以编辑一个现存的 Secret 对象,除非它是。 要想编辑一个 Secret,请执行以下命令:

    1. kubectl edit secrets <secret-name>

    要想删除一个 Secret,请执行以下命令:

    1. kubectl delete secret db-user-pass

    接下来