更新时间:2024-01-04 GMT+08:00

创建密钥

操作场景

密钥Secret)是一种用于存储工作负载所需要认证信息、密钥的敏感信息等的资源类型,内容由用户决定。资源创建完成后,可在容器工作负载中作为文件或者环境变量使用。

约束与限制

静态Pod中不可使用Secret。

操作步骤

  1. 登录CCE控制台,单击集群名称进入集群。
  2. 在左侧导航栏中选择“配置与密钥”,选择“密钥”页签,在右上角单击“创建密钥”
  3. 填写参数。

    表1 基本信息说明

    参数

    参数说明

    名称

    新建的密钥的名称,同一个命名空间内命名必须唯一。

    命名空间

    新建密钥所在的命名空间,默认为default。

    描述

    密钥的描述信息。

    密钥类型

    新建的密钥类型。

    • Opaque:一般密钥类型。
    • kubernetes.io/dockerconfigjson:存放拉取私有仓库镜像所需的认证信息。
    • kubernetes.io/tls:Kubernetes的TLS密钥类型,用于存放7层负载均衡服务所需的证书。kubernetes.io/tls类型的密钥示例及说明请参见TLS Secret
    • IngressTLS:CCE提供的TLS密钥类型,用于存放7层负载均衡服务所需的证书。
    • 其他:若需要创建其他类型的密钥,请手动输入密钥类型。

    密钥数据

    工作负载密钥的数据可以在容器中使用。

    • 当密钥为Opaque类型时,单击,在弹出的窗口中输入键值对,并且可以勾选“自动Base64转码”
    • 当密钥为kubernetes.io/dockerconfigjson类型时,输入私有镜像仓库的账号和密码。
    • 当密钥为kubernetes.io/tls或IngressTLS类型时,上传证书文件和私钥文件。
      说明:
      • 证书是自签名或CA签名过的凭据,用来进行身份认证。
      • 证书请求是对签名的请求,需要使用私钥进行签名。

    密钥标签

    密钥的标签。键值对形式,输入键值对后单击“添加”

  4. 配置完成后,单击“确定”

    密钥列表中会出现新创建的密钥。

Secret资源文件配置示例

本章节主要介绍Secret类型的资源描述文件的配置示例。

  • Opaque类型

    定义的Secret文件secret.yaml内容如下。其中data字段以键值对的形式填写,value需要用Base64编码,Base64编码方法请参见如何进行Base64编码

    apiVersion: v1
    kind: Secret
    metadata:
      name: mysecret           # secret的名称
      namespace: default       #命名空间,默认为default
    data:
      <your_key>: <your_value>  #填写键值对,其中value需要用Base64编码
    type: Opaque
  • kubernetes.io/dockerconfigjson类型

    定义的Secret文件secret.yaml内容如下。其中.dockerconfigjson需要用Base64,Base64编码方法请参见如何进行Base64编码

    apiVersion: v1
    kind: Secret
    metadata:
      name: mysecret           # secret的名称
      namespace: default       #命名空间,默认为default
    data:
      .dockerconfigjson: eyJh*****    #Base64编码后的内容
    type: kubernetes.io/dockerconfigjson

    获取.dockerconfigjson内容的步骤如下:

    1. 获取镜像仓库的登录信息:
      • 镜像仓库地址:本文中以address为例,请根据实际信息替换。
      • 用户名:本文中以username为例,请根据实际信息替换。
      • 密码:本文中以password为例,请根据实际信息替换。
    2. 使用Base64将键值对username:password进行编码,获取编码后的内容填入3中。
      echo -n "username:password" | base64

      回显如下:

      dXNlcm5hbWU6cGFzc3dvcmQ=
    3. 使用Base64对以下JSON内容进行编码。
      echo -n '{"auths":{"address":{"username":"username","password":"password","auth":"dXNlcm5hbWU6cGFzc3dvcmQ="}}}' | base64

      回显如下:

      eyJhdXRocyI6eyJhZGRyZXNzIjp7InVzZXJuYW1lIjoidXNlcm5hbWUiLCJwYXNzd29yZCI6InBhc3N3b3JkIiwiYXV0aCI6ImRYTmxjbTVoYldVNmNHRnpjM2R2Y21RPSJ9fX0=

      编码后的内容即为.dockerconfigjson内容。

  • kubernetes.io/tls类型
    其中tls.crt和tls.key需要用Base64,Base64编码方法请参见如何进行Base64编码
    kind: Secret
    apiVersion: v1
    metadata:
      name: mysecret           # secret的名称
      namespace: default       #命名空间,默认为default
    data:
      tls.crt: LS0tLS1CRU*****FURS0tLS0t  #证书内容,需要Base64编码
      tls.key: LS0tLS1CRU*****VZLS0tLS0=  #私钥内容,需要Base64编码
    type: kubernetes.io/tls
  • IngressTLS类型
    其中tls.crt和tls.key需要用Base64,Base64编码方法请参见如何进行Base64编码
    kind: Secret
    apiVersion: v1
    metadata:
      name: mysecret           # secret的名称
      namespace: default       #命名空间,默认为default
    data:
      tls.crt: LS0tLS1CRU*****FURS0tLS0t  #证书内容,需要Base64编码
      tls.key: LS0tLS1CRU*****VZLS0tLS0=  #私钥内容,需要Base64编码
    type: IngressTLS

使用kubectl创建密钥

  1. 请参见通过kubectl连接集群配置kubectl命令。
  2. 通过Base64编码,创建并编辑cce-secret.yaml文件。

    # echo -n "待编码内容" | base64
    ******

    vi cce-secret.yaml

    Opaque类型的YAML示例如下,其余类型请参见Secret资源文件配置示例

    apiVersion: v1
    kind: Secret
    metadata:
      name: mysecret
    type: Opaque
    data:
      <your_key>: <your_value>  #填写键值对,其中value需要用Base64编码

  3. 创建密钥。

    kubectl create -f cce-secret.yaml

    创建完成后可以查询到密钥。

    kubectl get secret -n default

相关操作

密钥创建完成后,您还可以执行表2中的操作。

密钥列表中包含系统密钥资源,系统密钥资源不可更新,也不能删除,只能查看。

表2 其他操作

操作

说明

编辑YAML

单击密钥名称后的“编辑YAML”,可编辑当前密钥的YAML文件。

更新密钥

  1. 选择需要更新的密钥名称,单击“更新”。
  2. 根据表1更改信息。
  3. 单击“确定”。

删除密钥

选择要删除的密钥,单击“删除”。

根据系统提示删除密钥。

批量删除密钥

  1. 勾选需要删除的密钥名称。
  2. 单击页面左上角的“批量删除”,删除选中的密钥。
  3. 根据系统提示删除密钥。

如何进行Base64编码

对字符串进行Base64编码,可以直接使用“echo -n 要编码的内容 | base64”命令即可,示例如下:

root@ubuntu:~# echo -n "待编码内容" | base64
******