密钥

Kubernetes 密钥 (Secret) 可用于存储和管理密码、OAuth 令牌和 SSH 密钥等敏感信息。Pod 可以通过三种方式使用密钥:

  • 作为挂载到 Pod 中容器化应用上的卷中的文件。
  • 作为 Pod 中容器使用的环境变量。
  • 作为 kubelet 为 Pod 拉取镜像时的镜像仓库凭证。

本教程演示如何在 KubeSphere 中创建密钥。

准备工作

您需要创建一个企业空间、一个项目和一个帐户(例如 project-regular)。该帐户必须已邀请至该项目,并具有 operator 角色。有关更多信息,请参阅创建企业空间、项目、帐户和角色

创建密钥

步骤 1:进入密钥页面

project-regular 用户登录控制台并进入项目,在左侧导航栏中选择配置中心下的密钥,然后点击创建

create-secrets

步骤 2:配置基本信息

设置密钥的名称(例如 demo-secret),然后点击下一步

提示

您可以在对话框右上角启用编辑模式来查看密钥的 YAML 清单文件,并通过直接编辑清单文件来创建密钥。您也可以继续执行后续步骤在控制台上创建密钥。

set-secret

步骤 3:设置密钥

  1. 密钥设置选项卡,从类型下拉列表中选择密钥类型。您可以在 KubeSphere 中创建以下密钥,类型对应 YAML 文件中的 type 字段。

    secret-type

    备注

    对于所有的密钥类型,配置在清单文件中 data 字段的所有键值对的值都必须是 base64 编码的字符串。KubeSphere 会自动将您在控制台上配置的值转换成 base64 编码并保存到 YAML 文件中。例如,密钥类型为默认时,如果您在添加数据页面将分别设置为 passwordhello123,YAML 文件中显示的实际值为 aGVsbG8xMjM=(即 hello123 的 base64 编码,由 KubeSphere 自动转换)。

    • 默认:对应 Kubernetes 的 Opaque 密钥类型,同时也是 Kubernetes 的默认密钥类型。您可以用此类型密钥创建任意自定义数据。

      default-secret

    • TLS:对应 Kubernetes 的 kubernetes.io/tls 密钥类型,用于存储证书及其相关密钥。这类数据通常用于 TLS 场景,例如提供给应用路由 (Ingress) 资源用于终结 TLS 链接。使用此类型的密钥时,您必须为其指定凭证私钥,分别对应 YAML 文件中的 tls.crttls.key 字段。

      tls

    • 镜像仓库密钥:对应 Kubernetes 的 kubernetes.io/dockerconfigjson 密钥类型,用于存储访问 Docker 镜像仓库所需的凭证。有关更多信息,请参阅镜像仓库

      image-registry-secret

    • 帐户密码密钥:对应 Kubernetes 的 kubernetes.io/basic-auth 密钥类型,用于存储基本身份认证所需的凭证。使用此类型的密钥时,您必须为其指定用户名密码,分别对应 YAML 文件中的 usernamepassword 字段。

      account-password-secret

    • 自定义:您可以输入任何 Kubernetes 支持的密钥类型,并点击添加数据为其添加键值对。

      custom-secret

  2. 本教程以默认类型为例。点击添加数据,将键 (Key) 设置为 MYSQL_ROOT_PASSWORD 并将值 (Value) 设置为 123456,为 MySQL 设置密钥。

    add-data

    input-key

  3. 点击对话框右下角的 以确认配置。您可以继续为密钥添加键值对或点击创建完成操作。有关密钥使用的更多信息,请参阅创建并发布 WordPress

查看密钥详情

  1. 密钥创建后会显示在如图所示的列表中。您可以点击右边的三个点,并从下拉菜单中选择操作来修改密钥。

    secret-list

    • 编辑:查看和编辑基本信息。
    • 编辑配置文件:查看、上传、下载或更新 YAML 文件。
    • 编辑密钥:修改密钥键值对。
    • 删除:删除密钥。
  2. 点击密钥名称打开密钥详情页面。在详情选项卡,您可以查看密钥的所有键值对。

    secret-detail-page

    备注

    如上文所述,KubeSphere 自动将键值对的值转换成对应的 base64 编码。您可以点击右边的眼睛图标查看解码后的值。

  3. 点击更多操作对密钥进行其他操作。

    secret-dropdown-menu

    • 编辑配置文件:查看、上传、下载或更新 YAML 文件。
    • 编辑密钥:修改密钥键值对。
    • 删除:删除密钥并返回密钥列表页面。

使用密钥

通常情况下,在创建工作负载、服务任务定时任务时,您需要使用密钥。例如,您可以为代码仓库选择密钥。有关更多信息,请参阅镜像仓库

use-secret-repository

此外,您还可以用密钥为容器添加环境变量。您可以在容器镜像页面勾选环境变量,点击引用配置文件或密钥,然后从下拉列表中选择一个密钥。

use-secret-image

创建常用密钥

本节介绍如何为 Docker Hub 帐户和 GitHub 帐户创建密钥。

创建 Docker Hub 密钥

  1. project-regular 用户登录 KubeSphere 并进入您的项目。在左侧导航栏中选择配置中心下的密钥,然后在页面右侧点击创建

    secret-create

  2. 设置密钥名称(例如 dockerhub-id)并点击下一步。在密钥设置页面,设置以下参数,然后点击验证以检查设置的信息是否有效。

    类型:选择镜像仓库密钥

    仓库地址:输入您的 Docker Hub 仓库地址,例如 docker.io

    用户名:输入您的 Docker ID。

    密码:输入您的 Docker Hub 密码。

    docker-hub-secret

  3. 点击创建完成操作。

创建 GitHub 密钥

  1. project-regular 用户登录 KubeSphere 并进入您的项目。在左侧导航栏中选择配置中心下的密钥,然后在页面右侧点击创建

    secret-create

  2. 设置密钥名称(例如 github-id)并点击下一步。在密钥设置页面,设置以下参数。

    类型:选择帐户密码密钥

    用户名:输入您的 GitHub 帐户。

    密码:输入您的 GitHub 密码。

    github-secret

  3. 点击创建完成操作。