
# 创建密钥
密钥（Secret）是一种用于存储工作负载所需要认证信息、密钥的敏感信息等的资源类型，内容由用户决定。资源创建完成后，可在容器工作负载中作为文件或者环境变量使用。
#### 创建密钥
1. 登录[UCS控制台](https://console.huaweicloud.com/ucs/?#/aether/dashboard)，进入集群页面。
2. 单击左侧导航栏的"配置与密钥 \> 密钥"。您还可以直接创建密钥或基于YAML来创建，若希望通过YAML创建，请跳转至[5]。
3. 选择需要创建密钥的命名空间。
4. 单击"创建密钥"。 
   参照[表1]设置基本信息。
    表1基本信息说明 
   | 参数   | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   |:---|:---|
   | 名称   | 新建的密钥的名称，同一个命名空间内命名必须唯一。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | 命名空间 | 新建密钥所在的命名空间，默认为当前查看的命名空间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   | 描述   | 新建密钥的描述。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | 密钥类型 | 新建的密钥类型。 - Opaque：一般密钥类型。在高敏感场景下，建议先通过数据加密服务加密敏感数据后，再存入Secret中。  - kubernetes.io/dockerconfigjson：存放拉取私有仓库镜像所需的认证信息。如选择此类型的密钥，需要额外输入镜像仓库地址。  - IngressTLS：存放7层负载均衡服务所需的证书。如选择此类型的密钥，需要上传证书文件及私钥文件。  - 其他：若需要创建其他类型的密钥，请手动输入密钥类型。   |
   | 密钥数据 | 工作负载密钥的数据可以在容器中使用。 - 当密钥为Opaque类型时：输入键、值。其中"值"必须使用Base64编码，勾选"自动Base64编码"即可自动将输入的值转换为Base64编码。手动进行Base64编码的方法请参见[如何进行Base64编码]。  - 当密钥为dockerconfigjson类型时：输入私有镜像仓库的用户名和密码。 说明： 密钥可用于创建工作负载存储卷和设置工作负载环境变量，设置工作负载环境变量时，该密钥数据不可为空。                                                                                                                                           |
   | 密钥标签 | 标签以Key/value键值对的形式附加到各种对象上（如工作负载、节点、服务等）。 标签定义了这些对象的可识别属性，用来对它们进行管理和选择。 1. 输入键、值。  2. 单击"确认添加"                                                                                                                                                                                                                                                                                                                                                              |
      
   
   
5. 基于YAML文件创建密钥。在创建配置项页面右侧单击"YAML创建"。
   
   ![](https://support.huaweicloud.com/usermanual-ucs/public_sys-resources/note_3.0-zh-cn.png)
   若需要通过上传文件的方式创建资源，请确保资源描述文件已创建。支持json或yaml格式，详细请参见[Secret资源文件配置说明]。
   您可以导入或直接编写文件内容，格式为YAML或JSON。
   - 方式一：导入编排文件。 单击"导入"，导入格式为YAML或JSON的文件。编排内容中可直接展示YAML或JSON文件的内容。
     
   
   - 方式二：直接编排内容。 在编排内容区域框中，输入YAML或JSON文件内容。
     
    
   
   
6. 配置完成后，单击"确定"。 
   密钥列表中会出现新创建的密钥。
   
   
 
 #### Secret资源文件配置说明
本章节主要介绍Secret类型的资源描述文件的配置示例。
例如现在有一个工作负载需要获取账号密码，可以通过Secret来实现：
- yaml文件格式 定义的Secret文件secret.yaml内容如下。其中Value需要用Base64，Base64编码方法请参见[如何进行Base64编码]。
  ```
  apiVersion: v1
  kind: Secret
  metadata:
    name: mysecret           # secret的名称
    namespace: default       #命名空间，默认为default
  data:
    username: bXktdXNlcm5hbWUK  #用户名，需要用Base64编码
    password: ******  #需要用Base64编码
  type: Opaque     # type建议不要做修改
  ```
  
- json文件格式 定义的Secret文件secret.json内容如下。
  ```
  {
    "apiVersion": "v1",
    "kind": "Secret",
    "metadata": {
      "name": "mysecret",
      "namespace": "default"
    },
    "data": {
      "username": "bXktdXNlcm5hbWUK",
      "password": "******"
    },
    "type": "Opaque"
  }
  ```
  
 
#### 相关操作
密钥创建完成后，您还可以执行[表2]中的操作。
![](https://support.huaweicloud.com/usermanual-ucs/public_sys-resources/note_3.0-zh-cn.png)
kube-system命名空间下的密钥资源不能通过控制台更新，也不能删除，只能查看。
 表2其他操作 
| 操作     | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|
| 编辑YAML | 单击密钥名称后的"编辑YAML"，可编辑当前密钥的YAML文件。                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| 更新密钥   | 1. 选择需要更新的密钥名称，单击"更新"。  2. 根据[表1]更改信息。  3. 单击"确定"。   |
| 删除密钥   | 选择要删除的密钥，单击"删除"。 根据系统提示删除密钥。                                                                                                                                                                                                                                                                                                                                                                                                              |
| 批量删除密钥 | 1. 勾选需要删除的密钥名称。  2. 单击页面左上角的"批量删除"，删除勾选的密钥。  3. 根据系统提示删除密钥。                                         |
   
 #### 如何进行Base64编码
对字符串进行Base64加密，可以直接使用"echo -n 要编码的内容 \| base64"命令即可，示例如下：
```
root@ubuntu:~# echo -n "待编码内容" | base64
******
```
