密钥

密钥 (Secret) 解决了密码、token、密钥等敏感数据的配置问题,配置密钥后不需要把这些敏感数据暴露到镜像或者工作负载 (Pod) 的 Spec 中。密钥可以在创建工作负载时以存储卷或者环境变量的方式使用。

登录 KubeSphere 控制台,在所属的企业空间中选择已有 项目 或新建项目,访问左侧菜单栏,点击 配置中心 ➡ 密钥,进入密钥列表页。

密钥 - 图1

创建 Secret

创建密钥支持两种方式,页面创建编辑模式 创建,以下主要介绍页面创建的方式。若选择以编辑模式,可点击右上角编辑模式进入代码界面,支持 yaml 和 json 格式,可以方便习惯命令行操作的用户直接在页面上编辑 yaml 文件创建密钥。

编辑模式

第一步:填写基本信息

在服务列表页,点击 创建 按钮,填写基本信息:

  • 名称:为密钥起一个简洁明了的名称,便于快速了解、浏览和搜索。
  • 描述信息:详细介绍密钥的特性,当用户想进一步了解该密钥时,描述内容将变得尤为重要。

基本信息

第二步:Secret 设置

密钥支持以下五种类型:

  • 默认 (Opaque):base64 编码格式的 Secret,用来存储密码、密钥等,这种类型应用得比较多。例如:
  1. data:
  2. password: hello123
  3. username: guest
  • TLS (kubernetes.io/tls):常用于保存 TLS 证书和私钥等信息,可用来加密 Ingress,TLS secret 中必须包含名为 tls.crt 和 tls.key 的密钥,以 Credential 和 Private Key 保存。例如:
  1. apiVersion: v1
  2. data:
  3. tls.crt: base64 encoded cert
  4. tls.key: base64 encoded key
  5. kind: Secret
  6. metadata:
  7. name: testsecret
  8. namespace: default
  9. type: kubernetes.io/tls
  • 镜像仓库密钥 (kubernetes.io/dockerconfigjson):用来存储镜像仓库的认证信息,比如下面这类信息,详见 镜像仓库

    • 仓库地址: dockerhub.qingcloud.com
    • 用户名: guest
    • 密码: 'guest'
    • 邮箱: 123@test.com
  • 账号密码密钥:用来存储系统的账号密码,例如 DockerHub 或 GitHub。
  • 自定义:支持用户自己创建一种密钥类型 (type),格式与默认 (Opaque) 类型相似,都是键值对的形式。

密钥 - 图4

使用密钥

在当前的项目中创建好密钥之后,创建工作负载时可以通过两种方式使用该密钥:

  • 以 Volume 方式,在添加存储卷时点击 引入配置中心 选择创建的密钥。
  • 以环境变量方式,在添加容器镜像的高级设置中,点击 引入配置中心 选择创建的密钥。

关于如何使用密钥,建议参考 示例一 - 部署 MySQL

创建常用的几类密钥

创建 DockerHub 密钥

1、以项目普通用户 project-regular 进入之前创建的项目 demo-namespace,在左侧的配置中心菜单下,点击 密钥,进入密钥管理界面。

create-ca

2、点击创建,创建一个用于 DockerHub 登录的密钥;

  • 名称:必填,此名称作为改密钥的名称使用,此处命名为 dockerhub-id
  • 别名:为了方便理解可自定义设置
  • 描述信息:简单描述该密钥的用途等相关信息,可自定义

然后点击下一步

name-ca

  • 类型:选择 镜像仓库密钥
  • 仓库地址:填写 DockerHub 的仓库地址,如docker.io
  • 用户名:填写您个人的 DockerHub 的用户名
  • 密码:填写您个人的 DockerHub 的密码

3、完成后点击 「创建」。

创建 GitHub 密钥

同上,创建一个用于 GitHub 的密钥,凭证 ID 命名为 github-id,类型选择 账号密码密钥,输入您个人的 GitHub 用户名和密码,完成后点击 确定