当前位置: 首页 > news >正文

k8s配置之configMap介绍

在 Kubernetes (K8s) 中,ConfigMap 是一种用于存储非敏感配置数据的 API 对象。

简单来说,它的核心目的是将应用程序的配置与容器镜像解耦。这意味着你可以在不重新构建镜像的情况下,修改应用的配置(比如数据库地址、日志级别、配置文件内容),让同一个镜像可以在开发、测试和生产环境中复用。

1. 核心概念与特点

  • 键值对存储:ConfigMap 本质上是一组键值对(Key-Value)的集合。
  • 非敏感数据:它专门用于存储明文配置。如果需要存储密码、Token 或 SSH 密钥等敏感信息,请使用 Secret
  • 解耦:配置不再硬编码在代码或镜像中,而是作为 K8s 资源独立管理。
  • 大小限制:单个 ConfigMap 的大小通常限制在 1MB 以内。

2. 创建 ConfigMap 的四种方式

你可以通过命令行或 YAML 文件来创建 ConfigMap。

方式 命令示例 适用场景
1. 命令行指定 kubectl create configmap my-config --from-literal=key1=val1 --from-literal=key2=val2 快速创建简单的键值对配置。
2. 从文件创建 kubectl create configmap my-config --from-file=./app.conf 将现有的配置文件直接导入,键名为文件名。
3. 从目录创建 kubectl create configmap my-config --from-file=./config-dir/ 批量导入目录下的多个配置文件。
4. YAML 文件 kubectl apply -f configmap.yaml 最推荐。适合版本控制(GitOps)和复杂配置管理。

YAML 示例 (configmap.yaml):

apiVersion: v1
kind: ConfigMap
metadata:name: app-config
data:# 简单的键值对log_level: "info"app_mode: "production"# 完整的配置文件内容 (使用 | 保留换行)app.properties: |server.port=8080db.url=jdbc:mysql://db-service:3306/mydb

3. 在 Pod 中使用 ConfigMap

ConfigMap 创建后,需要在 Pod 中引用才能生效。主要有两种使用方式:

📥 方式一:作为环境变量注入

适用于应用通过环境变量读取配置的场景。

  • 注入单个变量

    env:- name: LOG_LEVELvalueFrom:configMapKeyRef:name: app-configkey: log_level
    
  • 注入所有变量

    envFrom:- configMapRef:name: app-config
    
    • 特点:容器启动时生效。如果 ConfigMap 更新,环境变量不会自动更新,必须重启 Pod 才能生效。

📂 方式二:作为数据卷挂载

适用于应用需要读取配置文件的场景(如 Nginx 配置文件)。

volumes:- name: config-volumeconfigMap:name: app-config
containers:- name: my-appimage: my-imagevolumeMounts:- name: config-volumemountPath: /etc/config
  • 特点:ConfigMap 中的每个键都会变成挂载目录下的一个文件。
  • 热更新:如果 ConfigMap 更新,挂载的文件通常会在 1-2 分钟内 自动同步更新(取决于 Kubelet 的同步周期)。但应用本身需要支持热重载(如 Nginx reload)才能读取到新配置。

最佳实践与注意事项

  1. 命名规范:建议使用 <应用名>-<环境>-config 的格式命名,便于区分。
  2. 更新策略:
    • 如果是环境变量注入,更新 ConfigMap 后记得执行 kubectl rollout restart deployment/<name> 来重启 Pod。
    • 如果是文件挂载,确保你的应用支持监听文件变化或提供 reload 接口。
  3. 不要存储大文件:由于 1MB 的限制,不要把大型日志或二进制文件放入 ConfigMap,应使用 PVC(持久卷)。
  4. 版本控制:尽量通过 YAML 文件管理 ConfigMap,并将其纳入 Git 版本控制,以便追踪配置变更历史。
http://www.jsqmd.com/news/586859/

相关文章:

  • 总结2026年口碑好的管道自动焊机,国标认证的管道自动焊机价格揭秘 - 工业推荐榜
  • AdaBound核心算法深度解析:动态学习率边界如何实现自适应梯度优化
  • 交易引擎内存数据库设计:ViaBTC Exchange Server如何保证数据一致性与高性能
  • Terminal-Icons开发者指南:深入理解模块架构与扩展机制
  • k8s配置管理之configMap介绍
  • SEO关键词优化的重要性是什么_如何避免关键词堆砌对SEO造成负面影响
  • 登坤牛皮劳保鞋靠谱不,通过客户评价来了解 - 工业品牌热点
  • AndroidIDE Gradle构建完全教程:从零开始配置项目
  • 实用技巧:永辉超市卡回收注意事项及最佳选择 - 团团收购物卡回收
  • OpenClaw飞书机器人实战:Qwen2.5-VL-7B多模态对话配置
  • Lepton AI数据加密:保障传输与存储安全的最佳实践
  • CA6140车床拨叉机加工工艺规程及钻2×M8孔夹具设计【说明书+CAD图纸+过程卡+1张工序卡】
  • 基于单片机霍尔传感器速度检测系统设
  • 【节点】[Negate节点]原理解析与实际应用
  • OpenRPA插件生态系统:7个核心插件扩展SAP、Office、Java等企业应用自动化能力
  • 2026年珠三角隔音门窗加工厂年度排名,口碑好的推荐哪家 - 工业设备
  • 如何快速搭建Inspeckage环境:从安装到配置的完整教程
  • 如何简单快速修复老游戏兼容性:DDrawCompat终极解决方案
  • 太原空调移机找哪家?优选尖兵搬家,本地团队,拆装一站式服务 - 宁夏壹山网络
  • 2026年断桥铝门窗制造商排名,珠三角地区值得推荐的有哪些 - mypinpai
  • 如何在uni-app中快速实现电话与短信功能:系统能力集成完整指南
  • @electron/asar 实战教程:如何高效打包大型Electron应用
  • 聊聊2026年好用的转子平衡机供应企业,哪家性价比高 - 工业品网
  • 实战电商监控:基于快马平台构建具备价格追踪功能的openclaw插件
  • Tabman完全指南:iOS应用分页导航的终极解决方案
  • TinyZero
  • 2026年探寻有名的礼品供应链公司,价格方面是多少? - 工业推荐榜
  • 吸粮机的设计【气力输送机的设计】【毕业论文 cad图纸 三维sw 开题报告 任务书 答辩PPT】
  • StructBERT情感分类镜像实操手册:supervisorctl服务管理教程
  • Go语言编程精髓:函数、结构体与接口的协同艺术