- 文档首页
容器服务
容器服务 VKE
用户指南
工作负载
配置管理
在容器中使用保密字典
在容器中使用保密字典
本文主要描述容器中使用保密字典(Secret)的场景及其相关操作步骤。
企业应用在部署时往往需要使用数据库密码、API 密钥、TLS 证书等敏感信息。若将这些信息硬编码到镜像或工作负载 YAML 中,会带来严重的安全风险和环境耦合问题。Secret 通过将敏感数据与应用解耦,专门存储密码、密钥、证书等非明文配置,配合 Kubernetes 的 RBAC 与命名空间隔离机制实现更细粒度的访问控制。
Secret 与配置项(ConfigMap)的定位类似,区别在于:Secret 专用于敏感数据,数据在 ETCD 中以 Base64 编码存储,ConfigMap 则用于存储非敏感的明文配置。
创建 Secret 后,可以通过以下两种方式在容器中使用:
提前准备 Secret。详细操作,请参见 创建保密字典。为方便您验证 Secret 的使用结果,本文使用如下示例 Secret 文件demo-secret.yaml。 下文以无状态负载(Deployment)为例,介绍如何使用 Secret 设置工作负载的环境变量。
- 选择 工作负载 > 无状态负载,单击 创建无状态负载。
- 在 创建无状态负载 页面,部分参数按如下说明配置,其余参数按实际需求自定义配置。详细操作,请参见 创建无状态负载。
- 在 ②容器配置 步骤中,单击 环境变量 区域的+图标,添加环境变量,将前提条件中准备的 Secret 作为无状态负载的环境变量。
-
- 检查无状态负载创建结果并查看环境变量是否注入成功。
- 在 无状态负载 页面找到刚创建的负载,单击名称进入 无状态负载详情页。
- 在 无状态负载详情页,选择 实例列表 页签,查看无状态负载对应的 Pod 是否均处于 Running 状态。
- 单击 Pod 名称进入 容器组详情页,然后单击页面右上角 控制台 登录 Pod 后执行如下命令验证环境变量是否注入成功。
- Deployment 对应的 YAML 示例文件secret-env-demo.yaml内容如下。详细的 YAML 配置说明,请参见 创建无状态负载。
- 执行以下命令,检查工作负载是否正常拉起。输出 Pod 为 Running 状态,说明 Deployment 创建成功。
- 预期输出如下,Secret 被注入到环境变量时会自动解码为明文。
下文以 Deployment 为例,介绍如何将 Secret 挂载为工作负载的数据卷。
- 选择 工作负载 > 无状态负载,单击 创建无状态负载。
- 在 创建无状态负载 页面,部分参数按如下说明配置,其余参数按实际需求自定义配置。详细操作,请参见 创建无状态负载。
- 在 ②容器配置 步骤中,按如下说明配置 存储配置 区域的参数。
- 在 添加卷 中,单击+图标,将保密字典配置为存储卷。
- 在 挂载卷 中,单击+图标,挂载配置好的保密字典。
-
- 检查无状态负载创建结果并查看环境变量是否注入成功。
- 在 无状态负载 页面找到刚创建的负载,单击名称进入 无状态负载详情页。
- 在 无状态负载详情页,选择 实例列表 页签,查看无状态负载对应的 Pod 是否均处于 Running 状态。
- 单击 Pod 名称进入 容器组详情页,然后单击页面右上角 控制台 登录 Pod 后执行如下命令验证保密字典是否挂载成功。
- 输出内容包含DB_HOST、DB_PORT、password、username,即说明挂载成功。
- 输出password对应的值(如123456),说明保密字典内容正确。
- Deployment 对应的 YAML 示例文件secret-volume-demo.yaml内容如下。详细的 YAML 配置说明,请参见 创建无状态负载。
- 执行以下命令,检查工作负载是否正常拉起。输出 Pod 为 Running 状态,说明 Deployment 创建成功。
- 执行以下命令,验证 Secret 是否成功挂载。
- 输出内容应包含username文件(Deployment 只挂载了username一个 Key)。
- 执行以下命令,查看 Secret 内容是否正确。
若您更新 Secret 后希望工作负载尽快生效,则按如下说明操作:
- 环境变量场景修改 Secret 后必须重启 Pod 才能生效。
- kubelet 默认同步周期约为 60 秒,最长可能延迟 1-2 分钟。如需立即生效,可重启 Pod。
说明
使用 subPath 挂载的文件不会自动更新,您需要手动重启 Pod。
最近更新时间:2026.07.16 16:04:53