在工作负载连接后端数据库服务、对客户端请求进行安全验证等业务场景中,您可能需要保存一些敏感的配置信息,如用户名、密码和证书等。建议您通过阿里云容器计算服务ACS集群的保密字典(Secret)来管理这些敏感信息,避免信息暴露。本文介绍如何在ACS控制台创建保密字典,以及如何通过数据卷和环境变量的方式使用保密字典。
前提条件
使用保密字典时,Pod和保密字典需处于同一集群和命名空间中。
已使用kubectl连接Kubernetes集群。具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群。
创建保密字典
通过本示例创建保密字典secret-test。
登录容器计算服务控制台,在左侧导航栏选择集群。
在集群页面,单击目标集群ID,然后在左侧导航栏,选择
。在无状态页面中,单击使用YAML创建资源。
选择示例模板或自定义,拷贝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目录下。
创建并复制以下内容到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
执行以下命令,配置保密字典。
kubectl apply -f example0.yaml
执行以下命令,验证保密字典配置成功。
kubectl describe pod pod0 | grep -A 4 Volumes
预期输出:
Volumes: srt: Type: Secret (a volume populated by a Secret) SecretName: secret-test Optional: false
通过控制台配置
登录容器计算服务控制台,在左侧导航栏选择集群。
在集群页面,单击目标集群ID,然后在左侧导航栏,选择
。在无状态页面,单击使用镜像创建。
说明详细配置说明,请参见创建无状态工作负载Deployment。
在应用基本信息页签中,按需进行相应配置,然后单击下一步。
在容器配置页签,在数据卷区域,单击增加本地存储,存储卷类型为保密字典,挂载源为创建保密字典创建好的密钥,容器路径为在容器中访问的路径。配置好相应信息后,单击下一步。
本例中,配置示例如下所示。
在高级配置页签中,进行相应配置,然后单击创建。
通过环境变量的方式使用保密字典
以下两种配置方法您可任选其一进行配置。
通过命令行进行配置
本示例将会把secret-test保密字典中的user和password设置为Pod的环境变量。
创建并拷贝以下内容到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
执行以下命令,配置保密字典。
kubectl apply -f example1.yaml
执行以下命令,验证保密字典配置是否成功。
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
通过控制台配置
登录容器计算服务控制台,在左侧导航栏选择集群。
在集群页面,单击目标集群ID,然后在左侧导航栏,选择
。在无状态页面中,单击使用镜像创建。
说明详细说明,请参见创建无状态工作负载Deployment。
在应用基本信息页签中,按需进行相应配置,然后单击下一步。
在容器配置页签,在环境变量区域,单击,类型为密钥,变量/变量引用为创建保密字典中创建好的密钥,再分别选择使用的key并输入变量名称。
本例中,配置示例如下所示。