Skip to content
Kubernetes 核心对象与资源治理 · 第 2 篇 / 共 4 篇
领域运维与部署
专题Kubernetes 专题
当前序列Kubernetes 核心对象与资源治理
阅读位置第 2 篇 / 共 4 篇当前专题第 1 个序列 / 共 3 个序列

ConfigMap、Secret、Volume 和环境变量怎么选

这几个概念最容易混,是因为它们都能把“外部配置”交给容器。但真正决定选型的,不是名字,而是数据是否敏感、是否需要文件形态、是否要求热更新。

先说结论

  • 普通文本配置优先用 ConfigMap
  • 敏感信息优先用 Secret
  • 需要以文件形式挂载时,用 Volume 挂 ConfigMap 或 Secret
  • 只适合少量、稳定、启动时读取一次的配置,才优先考虑环境变量

核心边界

ConfigMap 适合什么

ConfigMap 适合放非敏感配置,比如开关项、地址、线程池参数、日志级别、业务阈值。它的优点是和应用解耦,改配置不必重做镜像。

Secret 适合什么

Secret 适合数据库密码、AK/SK、证书、Token 这类敏感信息。它不是绝对安全,只是比明文写进镜像、环境变量或代码里更规范。真正安全还要结合 RBAC、加密存储和最小权限。

Volume 解决什么问题

Volume 不是配置类型,而是挂载方式。应用如果要求读取证书文件、YAML 文件、Key 文件,就要通过 Volume 把 ConfigMap 或 Secret 以文件形式挂进去。

环境变量什么时候更合适

环境变量适合数量少、格式简单、应用启动后不会频繁变化的配置。比如运行环境标识、端口号、少量开关值。它的优点是简单,但复杂配置会变得难维护。

实战里怎么选

先看配置是否敏感

敏感就走 Secret,不敏感再考虑 ConfigMap。

再看应用读取方式

应用只认文件,就挂 Volume;应用只在启动时读简单键值,用环境变量更直接。

最后看是否需要动态生效

如果配置会频繁调整,尽量不要全部塞进环境变量。因为环境变量通常要重启 Pod 才能生效,而文件挂载配合应用热加载更灵活。

常见误区

把所有配置都放环境变量

前期方便,后期会非常乱,尤其是配置项多、层级深的时候。

觉得 Secret 天然足够安全

Secret 只是基础设施提供的标准载体,不代表已经完成了权限治理和审计。

直接把整份配置文件打进镜像

这样会让环境差异和镜像版本耦合,发布和回滚都更麻烦。

一句话总结

先分敏感与否,再看是键值还是文件,最后判断要不要热更新,这三步基本就能把 ConfigMap、Secret、Volume 和环境变量用对。

延伸阅读相关文章优先当前专题,再补跨专题关联。
同一序列 · 顺着当前主线继续读Request、Limit、HPA 怎么配合容量治理适合把 Deployment、Service、ConfigMap、资源限制和探针放在一起看。Kubernetes 专题 · Kubernetes 核心对象与资源治理同一序列 · 顺着当前主线继续读Readiness、Liveness、Startup Probe 怎么分工适合把 Deployment、Service、ConfigMap、资源限制和探针放在一起看。Kubernetes 专题 · Kubernetes 核心对象与资源治理同专题其他序列 · 共享标签:选型对比、部署交付RollingUpdate、Blue Green、Canary 怎么选适合把网络、发布策略、持久化和 Pod 故障排查放到一起看。Kubernetes 专题 · Kubernetes 发布与排障主线同专题其他序列 · 共享标签:部署交付节点污点、亲和性和拓扑 spread 怎么组合适合把命名空间、回滚、PDB、HPA、Mesh 和调度约束放在一条 Kubernetes 治理主线上整理。Kubernetes 专题 · Kubernetes 编排约束与交付治理跨专题关联 · 共享标签:选型对比、部署交付灰度、蓝绿、滚动发布到底怎么选:以及上线失败后怎么回滚适合沿着流水线设计、自动部署、发布策略、数据库变更和多环境治理这条线往下读。CI/CD 与发布治理专题 · CI/CD 与发布治理跨专题关联 · 共享标签:选型对比、部署交付cron 和 systemd timer 怎么选适合把进程、负载、I/O 和定时任务放在一起看。Linux 与服务器治理专题 · Linux 性能分析与系统时钟
继续阅读Kubernetes 核心对象与资源治理当前序列第 2 篇 / 共 4 篇当前专题第 1 个序列 / 共 3 个序列
往前看
上一篇Pod、Deployment、Service 到底怎么协作回到当前序列上一章上一序列Linux 网络与权限安全细节从第 1 篇开始:ss、netstat、lsof 怎么配合排查端口问题
往后看
下一篇Request、Limit、HPA 怎么配合容量治理继续当前序列下一章下一序列Kubernetes 发布与排障主线从第 1 篇开始:Ingress、Service 和集群网络链路怎么串起来看

把零散经验整理成可查、可复用、可持续更新的企业级知识门户