在工作负载连接后端数据库服务、对客户端请求进行安全验证等业务场景中,可能需要保存一些敏感的配置信息,如用户名、密码和证书等。建议通过阿里云容器计算服务ACS集群的保密字典(Secret)来管理这些敏感信息,避免信息泄露。本文介绍如何在ACS控制台创建保密字典,以及如何通过数据卷和环境变量的方式使用保密字典。
前提条件
使用保密字典时,Pod和保密字典需处于同一集群和命名空间中。
已使用kubectl连接Kubernetes集群。具体操作,请参见获取集群kubeconfig并通过kubectl工具连接集群。
创建保密字典
通过本示例创建保密字典secret-test。
登录容器计算服务控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择工作负载 > 无状态。
在无状态页面中,单击使用YAML创建资源。
选择示例模板或自定义,复制YAML内容,然后单击创建。
可使用如下YAML示例模板创建保密字典。
apiVersion: v1 kind: Secret metadata: name: secret-test type: Opaque data: username: YWRtaW4= #明文为admin,需要用Base64编码。 password: MTIzNDU= #明文为12345,需要用Base64编码。
也可通过ACS控制台界面创建保密字典,请参见创建保密字典。
通过数据卷的方式使用保密字典
kubectl方式
保密字典可以在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
创建Pod。
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
控制台方式
登录容器计算服务控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择工作负载 > 无状态。
在无状态页面,单击使用镜像创建。
说明详细配置说明,请参见创建无状态工作负载Deployment。
在应用基本信息页签中,按需进行相应配置,然后单击下一步。
在容器配置页签,在数据卷区域,单击增加本地存储,存储卷类型为保密字典,挂载源为创建保密字典创建好的密钥,容器路径为在容器中访问的路径。配置好相应信息后,单击下一步。
本例中,配置示例如下所示。
在高级配置页签中,进行相应配置,然后单击创建。
通过环境变量的方式使用保密字典
以下两种配置方法可任选其一进行配置。
kubectl方式
本示例将会把secret-test保密字典中的username
和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
创建Pod。
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
控制台方式
登录容器计算服务控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择工作负载 > 无状态。
在无状态页面中,单击使用镜像创建。
说明详细说明,请参见创建无状态工作负载Deployment。
在应用基本信息页签中,按需进行相应配置,然后单击下一步。
在容器配置页签,在环境变量区域,单击新增,类型为保密字典,变量/变量引用为创建保密字典中创建好的密钥,再分别选择要引用的Key并输入变量名称。