Secret管理

最近更新时间: 2024-06-12 15:06:00

简介

Secret 可用于存储密码、令牌、密钥等敏感信息,降低直接对外暴露的风险。 Secret 是有 key-value 类型的键值对,您可以通过控制台的 Kubectl 工具创建对应的 Secret 对象,也可以通过挂载数据卷、环境变量或在容器的运行命令中使用 Secret。

Secret 控制台操作指引

创建 Secret

  1. 登录 TKE 控制台。

  2. 在左侧导航栏中,单击【集群】,进入“集群管理”页面。

  3. 单击需要创建 Secret 的集群【ID/名称】,进入待创建 Secret 的集群管理页面。

  4. 选择【配置管理】 > 【Secret】,进入“Secret”信息页面。

  5. 单击【新建】,进入“新建Secret”页面。

  6. 根据实际需求,设置 Secret 参数。关键参数信息如下:

    • 名称:自定义。

    • 命名空间:根据实际需求进行选择命名空间类型。

    • 内容:根据实际需求,设置变量名和变量值。

  7. 单击【创建Secret】,完成创建。

使用 Secret

方式一:数据卷使用 Secret 类型

  1. 登录 TKE 控制台。

  2. 在左侧导航栏中,单击【集群】,进入“集群管理”页面。

  3. 单击需要部署 Workload 的集群【ID/名称】,进入待部署 Workload 的集群管理页面。

  4. 在 “工作负载” 下,任意选择 Workload 类型,进入对应的信息页面。例如,选择【工作负载】 > 【DaemonSet】,进入“DaemonSet”信息页面。

  5. 单击【新建】,进入“新建Workload”页面。

  6. 根据页面信息,设置工作负载名、命名空间等信息。并在 “数据卷” 中,单击【添加数据卷】,添加数据卷。

  7. 选择 “使用Secret” 方式,填写名称,单击【选择Secret】。

  8. 在弹出的 “设置Secret” 窗口中,配置挂载点,单击【确认】。

  9. 单击【创建Workload】,完成创建。

方式二:环境变量中使用 Secret 类型

  1. 登录 TKE 控制台。

  2. 在左侧导航栏中,单击【集群】,进入“集群管理”页面。

  3. 单击需要部署 Workload 的集群【ID/名称】,进入待部署 Workload 的集群管理页面。

  4. 在 “工作负载” 下,任意选择 Workload 类型,进入对应的信息页面。例如,选择【工作负载】 > 【DaemonSet】,进入“DaemonSet”信息页面。

  5. 单击【新建】,进入“新建Workload”页面。

  6. 根据页面信息,设置工作负载名、命名空间等信息。并在 “实例内容器” 的 “环境变量” 中,单击【引用ConfigMap/Secret】。

  7. 选择 *Secret *环境变量方式,并根据实际需求选择资源。

  8. 单击【创建Workload】,完成创建。

更新 Secret

  1. 登录 TKE 控制台。

  2. 在左侧导航栏中,单击【集群】,进入“集群管理”页面。

  3. 单击需要更新 YAML 的集群【ID/名称】,进入待更新 YAML 的集群管理页面。

  4. 选择【配置管理】 > 【Secret】,进入“Secret”信息页面。

  5. 在需要更新 YAML 的 Secret 行中,单击【编辑YAML】,进入更新 Secret 页面。

  6. 在“更新Secret”页面,编辑 YAML,单击【完成】,即可更新 YAML。

    如需修改 key-values,编辑 YAML 中 data 的参数值,单击【完成】,即可完成更新。

更新 Secret 配置

  1. 登录 TKE 控制台。

  2. 在左侧导航栏中,单击【集群】,进入“集群管理”页面。

  3. 单击需要更新 配置的集群【ID/名称】,进入待更新的集群管理页面。

  4. 选择【配置管理】 > 【Secret】,进入“Secret”信息页面。

  5. 在需要更新配置的 Secret 行中,单击【更新配置】,进入更新页面。

  6. 在更新页面,编辑配置项,单击【完成】,即可更新。

Kubectl 操作 Secret 指引

创建 Secret

方式一:通过指定文件创建 Secret

  1. 执行以下命令,获取 Pod 的用户名和密码。

    $ echo -n 'username' > ./username.txt
    $ echo -n 'password' > ./password.txt
  2. 执行 Kubectl 命令,创建 Secret。

    $ kubectl create secret generic test-secret --from-file=./username.txt --from-file=./password.txt
    secret "testSecret" created
  3. 执行以下命令,查看 Secret 详情。

    kubectl describe secrets/ test-secret

方式二:YAML 文件手动创建

通过 YAML 手动创建 Secret,需提前将 Secret 的 data 进行 Base64 编码。

apiVersion: v1  
kind: Secret  
metadata:  
  name: test-secret  
type: Opaque  
data:  
  username: dXNlcm5hbWU=  ## 由echo -n 'username' | base64生成
  password: cGFzc3dvcmQ=  ## 由echo -n 'password' | base64生成

使用 Secret

方式一: 数据卷使用 Secret 类型

YAML 示例如下:

apiVersion: v1  
 kind: Pod  
 metadata:  
   name: nginx  
 spec:  
   containers:  
     - name: nginx  
       image: nginx:latest  
       volumeMounts:  
        name: secret-volume  
        mountPath: /etc/config  
   volumes:  
        name: secret-volume  
        secret:  
          name:  test-secret ## 设置 secret 来源  
          ## items:  ## 设置指定 secret的 Key 挂载  
          ##   key: username  ## 选择指定 Key  
          ##   path: group/user ## 挂载到指定的子路径  
          ##   mode: 256  ## 设置文件权限  
   restartPolicy: Never  

方式二: 环境变量中使用 Secret 类型

YAML 示例如下:

apiVersion: v1  
 kind: Pod  
 metadata:  
   name: nginx  
 spec:  
   containers:  
     - name: nginx  
       image: nginx:latest  
       env:  
         - name: SECRET_USERNAME  
           valueFrom:  
             secretKeyRef:  
               name: test-secret ## 设置来源 Secret 文件名  
               key: username  ## 设置该环境变量的 Value 来源项  
   restartPolicy: Never