首页/开发/CI/CD 与发布速查/Kubernetes ConfigMap
环境与配置管理60 条

Kubernetes ConfigMap

存放非敏感配置的对象:可整体挂载为文件、按键注入环境变量;更新后注意生效方式(卷内最终一致、环境变量需重启)。

CI/CD 与发布速查开发更新于 2026-10-13

ConfigMap 是什么

存放非敏感配置的对象:可整体挂载为文件、按键注入环境变量。卷挂载的文件更新后延迟同步,应用要能重读或滚动重启;环境变量注入必须重启 Pod 才生效。与 Secret 的差别在于敏感性与编码,而 ConfigMap 本身就是明文对象,任何有读权限的人都能看到内容,命名与权限控制要按这个前提做。

基本信息

创建kubectl create configmap app-config --from-file=config.yaml --from-literal=LOG_LEVEL=info
消费volume 挂载为文件、envFrom 注入环境变量、valueFrom 取单键
不可变immutable: true 可防误改并减轻 API Server 压力
生效方式卷挂载延迟同步;环境变量需重启 Pod
键名作为环境变量注入时非法键名会被跳过

典型使用场景

  • 配置文件挂载:应用读取挂载目录下的配置文件。
  • 环境变量注入:envFrom 批量或 valueFrom 单键注入。
  • 环境维度配置:不同命名空间各用一份 ConfigMap。
  • 不可变配置:immutable 防止运行期被误改。
  • 版本化管理:配置清单进仓库,变更走评审流程。

挂载示例

挂载示例
volumes:
  - name: cfg
    configMap:
      name: app-config
containers:
  - name: app
    volumeMounts:
      - {name: cfg, mountPath: /etc/app}

生效方式对照

方式更新后的行为适用
卷挂载延迟同步文件内容配置文件、证书类内容
环境变量需重启 Pod启动参数、连接地址
subPath 挂载不会自动更新单个文件的精确挂载
以卷方式挂载的 ConfigMap 更新后,文件内容会在延迟后同步;应用需具备感知或重启机制。
改完 ConfigMap 别等自动生效:环境变量注入必须重启 Pod,先明确生效路径再验证结果。
subPath 挂载的单个文件不会随更新变化,需要重建 Pod 或改用整目录挂载。
上线顺序讲究:先更新配置对象再发应用,应用启动时才能读到预期值,反过来会出现短暂错配。
注意容量上限:单个 ConfigMap 有大小限制,大配置文件要拆成多个对象而不是硬塞。
差异排查:对比两个环境时先 diff 配置清单再怀疑代码,能省下大量排查时间。

易错点

  • 把整个目录挂载覆盖容器内既有文件:mountPath 要精确到子路径或单文件。
  • 改完 ConfigMap 等应用自动生效:环境变量注入必须重启 Pod,明确生效路径。
  • 把敏感信息放 ConfigMap:无加密语义,密钥应放 Secret 并控制权限。
  • 应用不重读配置:卷同步了文件,进程仍用旧值,需要热加载或滚动重启。
  • 环境之间复制配置靠手改:漂移无法审计,配置要用清单文件统一管理。
  • 键名不当导致注入失败:非法环境变量名被静默跳过,排查先核对键名合法性。

数据来源与参考

  • Kubernetes 文档《ConfigMaps》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌