首页/云/Kubernetes 速查/ConfigMap 创建方式速查
配置与存储54 条

ConfigMap 创建方式速查

配置数据(非敏感)的键值集合:用命令行从字面量/文件/目录快速创建,或用 YAML 声明维护,注意键名与大小限制。

Kubernetes 速查云更新于 2026-10-13

创建配置对象是什么

配置对象用来存放非敏感的配置数据,本质是一组键值对,值可以是短字符串,也可以是整份配置文件的内容。创建方式有两条路:命令行从字面量、单个文件或整个目录生成,适合快速构造与临时验证;直接用 YAML 声明,适合纳入版本管理与评审。两条路的产物是同一个对象。

键名与容量的边界

键名有字符集限制,只允许字母数字与少数几个符号。整个对象还有容量上限,超过之后必须改用存储卷或者其他存储服务。此外要牢记它是明文存放的:任何有读取权限的对象都能看到内容,与其相关的边界是把凭据类数据放到专门的密钥对象里。

基本信息

适用环境任何 Kubernetes 发行版
存放内容非敏感的配置数据,键值或整份文件
创建方式命令行从字面量、文件、目录生成,或 YAML 声明
键名限制只允许字母数字与连字符、下划线、点号
容量上限对象整体有大小限制,大文件需换存储方案
敏感数据不应放在这里,改为使用密钥类对象

典型使用场景

  • 应用参数:日志级别、超时时间、功能开关这类需要区分环境的配置
  • 配置文件整体挂载:把一份配置文件的完整内容作为一个键存起来
  • 批量导入:把目录下的多个配置文件一次性转成对象
  • 从环境变量文件导入:把已有的键值文件直接转成对象
  • 生成草稿:用演练模式导出 YAML 后纳入版本库
  • 环境差异化:同一份模板配合不同的对象实现多环境配置

命令行创建

命令行创建
kubectl create cm app-config --from-literal=LOG_LEVEL=info --from-literal=MAX_CONN=100   # 字面量
kubectl create cm nginx-conf --from-file=nginx.conf        # 单文件,键名为文件名
kubectl create cm env-file --from-env-file=app.env          # 从键值文件导入
kubectl create cm web-files --from-file=./conf.d            # 整个目录导入
kubectl create cm app-config --from-literal=LOG_LEVEL=debug --dry-run=client -o yaml > cm.yaml

YAML 声明

YAML 声明
apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
  namespace: prod
data:
  LOG_LEVEL: info
  app.properties: |
    retries=3
    timeout=30s

两种创建方式的取舍

方式优点代价
命令行生成快,适合临时验证与生成草稿内容不在版本库里,无法评审
YAML 声明可评审、可追溯、可复用需要手工维护内容
从文件导入复用已有配置文件文件变更不会自动同步到对象
目录批量导入一次生成多个键键名冲突时会被覆盖
从文件或目录导入时键名默认取文件名,多个文件同名会造成键名冲突并相互覆盖,导入后应核对实际键列表。
配置对象更新后,以文件方式挂载的用法通常会自动更新,以环境变量或子路径方式注入的不会,需要重建实例才生效。

易错点

  • 把凭据放进配置对象:内容为明文存储且读取范围广,等同于把口令公开
  • 目录导入时键名冲突:文件同名导致内容被覆盖,应用读到错误配置
  • 误以为内容更新会自动生效:环境变量与子路径挂载都不接收更新,必须重建实例
  • 把大文件塞进对象:超过容量上限后创建失败,或对象体积过大拖慢集群查询
  • 键名含不支持的字符:直接创建失败,或注入环境变量时被忽略而找不到原因

数据来源与参考

  • Kubernetes 官方文档 · ConfigMaps
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌