在容器组中使用保密字典

在工作负载连接后端数据库服务、对客户端请求进行安全验证等业务场景中,您可能需要保存一些敏感的配置信息,如用户名、密码和证书等。建议您通过阿里云容器计算服务ACS集群的保密字典(Secret)来管理这些敏感信息,避免信息暴露。本文介绍如何在ACS控制台创建保密字典,以及如何通过数据卷和环境变量的方式使用保密字典。

前提条件

创建保密字典

通过本示例创建保密字典secret-test。

  1. 登录容器计算服务控制台,在左侧导航栏选择集群

  2. 集群页面,单击目标集群ID,然后在左侧导航栏,选择工作负载 > 无状态

  3. 无状态页面中,单击使用YAML创建资源

  4. 选择示例模板或自定义,拷贝YAML内容,然后单击创建

    您可以使用如下YAML示例模板创建保密字典。

    apiVersion: v1
    kind: Secret
    metadata:
      name: secret-test
    type: Opaque
    data:
      username: YWRtaW4=  #明文为admin,需要用Base64编码。  
      password: MTIzNDU=  #明文为12345,需要用Base64编码。

您也可以通过ACS控制台界面创建保密字典,请参见创建保密字典

通过数据卷的方式使用保密字典

以下两种配置方法您可任选其一进行配置。

通过命令行配置

保密字典可以在Pod中作为文件使用。如示例所示,secret-test保密字典的username和password以文件方式保存在/srt目录下。

  1. 创建并复制以下内容到example0.yaml中。

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod0
    spec:
      containers:
      - name: redis
        image: redis
        volumeMounts:
        - name: srt
          mountPath: "/srt"
          readOnly: true
      volumes:
      - name: srt
        secret:
          secretName: secret-test
  2. 执行以下命令,配置保密字典。

    kubectl apply -f example0.yaml
  3. 执行以下命令,验证保密字典配置成功。

    kubectl describe pod pod0 | grep -A 4 Volumes

    预期输出:

    Volumes:
      srt:
        Type:        Secret (a volume populated by a Secret)
        SecretName:  secret-test
        Optional:    false

通过控制台配置

  1. 登录容器计算服务控制台,在左侧导航栏选择集群

  2. 集群页面,单击目标集群ID,然后在左侧导航栏,选择工作负载 > 无状态

  3. 无状态页面,单击使用镜像创建

    说明

    详细配置说明,请参见创建无状态工作负载Deployment

  4. 应用基本信息页签中,按需进行相应配置,然后单击下一步

  5. 容器配置页签,在数据卷区域,单击增加本地存储存储卷类型保密字典挂载源创建保密字典创建好的密钥,容器路径为在容器中访问的路径。配置好相应信息后,单击下一步

    本例中,配置示例如下所示。

    配置数据卷

  6. 高级配置页签中,进行相应配置,然后单击创建

通过环境变量的方式使用保密字典

以下两种配置方法您可任选其一进行配置。

通过命令行进行配置

本示例将会把secret-test保密字典中的user和password设置为Pod的环境变量。

  1. 创建并拷贝以下内容到example1.yaml中。

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod1
    spec:
      containers:
      - name: redis
        image: redis
        env:
          - name: USERNAME
            valueFrom:
              secretKeyRef:
                name: secret-test
                key: username
          - name: PASSWORD
            valueFrom:
              secretKeyRef:
                name: secret-test
                key: password
  2. 执行以下命令,配置保密字典。

    kubectl apply -f example1.yaml
  3. 执行以下命令,验证保密字典配置是否成功。

    kubectl describe pod pod1 | grep -A 2 Environment

    预期输出:

        Environment:
          USERNAME:                 <set to the key 'username' in secret 'secret-test'>  Optional: false
          PASSWORD:                 <set to the key 'password' in secret 'secret-test'>  Optional: false

通过控制台配置

  1. 登录容器计算服务控制台,在左侧导航栏选择集群

  2. 集群页面,单击目标集群ID,然后在左侧导航栏,选择工作负载 > 无状态

  3. 无状态页面中,单击使用镜像创建

    说明

    详细说明,请参见创建无状态工作负载Deployment

  4. 应用基本信息页签中,按需进行相应配置,然后单击下一步

  5. 容器配置页签,在环境变量区域,单击环境变量类型密钥变量/变量引用创建保密字典中创建好的密钥,再分别选择使用的key并输入变量名称。

    本例中,配置示例如下所示。

    变量名称