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

K8s ConfigMap配置管理全解析

 Kubernetes(k8s)中,ConfigMap 是一种用于存储配置数据的资源对象,主要用来将配置信息和容器化应用进行解耦,以实现配置的集中管理、动态更新和复用。以下是详细介绍:

1. 用途

  • 分离配置和代码:在应用开发中,配置信息(如数据库连接字符串、日志级别等)经常需要根据不同的环境(开发、测试、生产)进行调整。使用 ConfigMap 可以将这些配置从应用代码中抽离出来,让应用代码保持不变,只需要修改 ConfigMap 中的配置数据,就能适应不同的环境。
  • 支持动态更新:当应用的配置发生变化时,不需要重新构建和部署容器镜像,只需要更新 ConfigMap,然后通过一定的方式(如重启 Pod、重新加载配置等)让应用获取到新的配置。
  • 多容器共享配置:在一个 Pod 中可能包含多个容器,这些容器可能需要共享一些配置信息,ConfigMap 就可以为它们提供统一的配置来源。

2. 数据结构

ConfigMap 可以以键值对(key-value)的形式来存储配置数据,值可以是简单的字符串,也可以是较为复杂的配置文件内容。

3. 创建方式

  • 基于字面量创建:使用kubectl create configmap命令并通过--from-literal参数指定键值对来创建。例如,要创建一个名为my-configmap,包含APP_COLOR=blueAPP_MODE=prod两个配置项的 ConfigMap,可以执行以下命令:
kubectl create configmap my-configmap --from-literal=APP_COLOR=blue --from-literal=APP_MODE=prod
  • 基于文件创建:如果配置信息已经存在于文件中,也可以基于文件来创建 ConfigMap。比如,有一个app.properties文件,内容为:
database.url=jdbc://localhost:3306/mydb
database.user=root
database.password=123456

可以通过以下命令创建 ConfigMap:

kubectl create configmap my-configmap --from-file=app.properties
  • 基于目录创建:如果有多个配置文件在一个目录下,可以基于目录创建 ConfigMap,Kubernetes 会为每个文件生成一个键值对,键为文件名,值为文件内容。假设config-files目录下有log.propertiesserver.properties两个文件,执行以下命令创建 ConfigMap:
kubectl create configmap my-configmap --from-file=config-files/

4. 在 Pod 中使用 ConfigMap

  • 环境变量方式:在 Pod 的 YAML 配置文件中,通过env字段引用 ConfigMap 中的数据作为容器的环境变量。示例如下:
apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-containerimage: my-imageenv:- name: APP_COLORvalueFrom:configMapKeyRef:name: my-configmap  # 引用的ConfigMap名称key: APP_COLOR  # ConfigMap中的键
  • 挂载卷方式:将 ConfigMap 作为 Volume 挂载到容器中,这样容器内的应用就可以像读取文件一样读取 ConfigMap 中的配置数据。示例如下:
apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-containerimage: my-imagevolumeMounts:- name: config-volumemountPath: "/etc/config"  # 挂载路径volumes:- name: config-volumeconfigMap:name: my-configmap  # 引用的ConfigMap名称

上述示例中,ConfigMap 中的数据会以文件的形式出现在/etc/config目录下,文件名就是 ConfigMap 中的键。

5. 更新 ConfigMap

当需要更新 ConfigMap 中的配置数据时,可以使用kubectl edit configmap命令来编辑 ConfigMap。例如:

kubectl edit configmap my-configmap

编辑保存后,通过一定的机制(如重启 Pod,或者应用本身支持动态重新加载配置)让应用获取到新的配置 。如果是通过挂载卷方式使用 ConfigMap,Kubernetes 默认会自动更新挂载的文件内容(有一定延迟)。


文章转载自:

http://82lLJNzR.cwqrj.cn
http://kjOWnsHF.cwqrj.cn
http://1KjVuvn8.cwqrj.cn
http://hxt1EewQ.cwqrj.cn
http://7G7TPGZz.cwqrj.cn
http://rgi36PeW.cwqrj.cn
http://zJWoNkUa.cwqrj.cn
http://Ml0kKr9r.cwqrj.cn
http://YcXeapeG.cwqrj.cn
http://plB0OR4I.cwqrj.cn
http://gEZeMIih.cwqrj.cn
http://LFR5JhmH.cwqrj.cn
http://OSgQQ4mh.cwqrj.cn
http://SIbjF8C8.cwqrj.cn
http://Siy4aHoQ.cwqrj.cn
http://TGccb1tQ.cwqrj.cn
http://idLUEAxL.cwqrj.cn
http://DSosUdxb.cwqrj.cn
http://BlHU53lS.cwqrj.cn
http://Wd4oBA5E.cwqrj.cn
http://1SUeP0ZK.cwqrj.cn
http://Yxf0vowA.cwqrj.cn
http://ZKZcCpng.cwqrj.cn
http://EDHiZBDM.cwqrj.cn
http://YCmUHOZt.cwqrj.cn
http://dfHT7Y7Y.cwqrj.cn
http://7UShQPBz.cwqrj.cn
http://4CsqGco9.cwqrj.cn
http://n6DXy2fO.cwqrj.cn
http://sexxsote.cwqrj.cn
http://www.dtcms.com/a/372114.html

相关文章:

  • 【Beetle RP2350】人体运动感应警报系统
  • tomcat下载
  • 数据结构精讲:栈与队列实战指南
  • 风电设备预测性维护方案:AIoT驱动的风电运维智能化转型​
  • Shell脚本监控系统资源详解
  • Vue基础知识-脚手架开发-Vue Router路由及params、query传参
  • 鱼眼相机模型
  • 类的加载和对象的创建
  • trl GRPO源码分析:如何处理多个reward function?
  • 临床研究三千问——临床研究体系的3个维度(8)
  • TypeORM入门教程:@JoinColumn和@OneToOne的关系
  • html列表标签之无序列表
  • [1]-01-创建空工程
  • 【模型训练篇】VeRL核心思想 - 论文HybridFlow
  • pycharm设置编辑区字体大小
  • 鸿蒙NEXT跨设备数据同步实战:分布式应用开发指南
  • C++ 中栈 (Stack) 详解和常见面试示例汇总实现
  • [光学原理与应用-461]:波动光学 - 波片实现偏振态的转换或调整
  • 苍穹外卖Day12 | Apache POI、导出Excel报表、HttpServletResponse、工作台
  • 《Go小技巧易错点100例》第三十八篇
  • Conda 包管理器与环境管理使用指南
  • 笔记本、平板如何成为电脑拓展屏?向日葵16成为副屏功能一键实现
  • OpenHarmony 显示能效管理组件:掌控屏幕亮灭与亮度的核心利器
  • SQLite的基本操作
  • 第五课 C#语言基本元素概览,初始类型,变量与方法,算法简介
  • 【系统分析师】第12章-关键技术:软件架构设计(核心总结)
  • Lightdash:一个免费开源的自助式BI平台
  • Claude Code 使用教程
  • UML(统一建模语言)
  • Android开发-常用布局