一、了解ConfigMap

1. 使用configmap的目的

把应用的代码和配置分开,通过配置configmap管理pod,一种统一的集群配置管理方案。
ConfigMap API资源提供了将配置数据注入容器的方式,同时保持容器是不知道Kubernetes的。ConfigMap可以被用来保存单个属性,也可以用来保存整个配置文件或者JSON二进制等对象。

2. configmap的原理

ConfigMap是存储通用的配置变量的。ConfigMap有点儿像一个统一的配置文件,使用户可以将分布式系统中用于不同模块的环境变量统一到一个对象中管理;而它与配置文件的区别在于它是存在集群的“环境”中的,并且支持K8s集群中所有通用的操作调用方式

而资源的使用者可以通过ConfigMap来存储这个资源的配置,这样需要访问这个资源的应用就可以同通过ConfigMap来引用这个资源。相当通过创建Configmap封装资源配置。

configmap以一个或者多个key:value的形式保存在k8s系统中供应用使用,既可以用于表示一个变量的值(eg.apploglevel:info),也可以用于表示一个完整配置文件的内容(eg: server.xml=<?xml…>…)
可以通过yaml配置文件或者直接用kubectl create configmap 命令行的方式来创建 ConfigMap。

3. ConfigMap配置使用

configmap用于保存配置数据,以键值对形式存储。
configMap 资源提供了向 Pod 注入配置数据的方法。
旨在让镜像和配置文件解耦,以便实现镜像的可移植性和可复用性

典型的使用场景:
• 填充环境变量的值
• 设置容器内的命令行参数
• 填充卷的配置文件

二、configmap的部署

1. 创建ConfigMap

创建ConfigMap的方式

  • 使用字面值创建
  • 使用文件创建
  • 使用目录创建
  • 编写configmap的yaml文件创建

1>. 使用字面值创建
请添加图片描述

kubectl get cm my-config -o yaml可以查看详细信息

2>. 使用目录创建

先创建一个目录用来存储configmap文件:
请添加图片描述

用目录创建configmap:
请添加图片描述
kubectl get cm my-config -o yaml

3>. 使用文件创建
请添加图片描述

请添加图片描述

4>. 编写configmap的yaml文件创建ConfigMap
请添加图片描述

请添加图片描述
请添加图片描述

2. Configmap的使用

如何使用configmap:
• 通过环境变量的方式直接传递给pod
• 通过在pod的命令行下运行的方式
• 作为volume的方式挂载到pod内

1>. configmap设置环境变量

a. 定义configmap的key

在刚才的pod.yaml下添加内容:
请添加图片描述
请添加图片描述
请添加图片描述

2>. conigmap设置命令行参数

请添加图片描述
请添加图片描述

command: ["/bin/sh", "-c", "echo $(db_host) $(db_port)"] 

查看pod2信息:
请添加图片描述

3>.configmap热更新
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

请添加图片描述
修改端口号为8000:
请添加图片描述
请添加图片描述
手动触发相关Pod的滚动更新
请添加图片描述
注意此时ip已经更改
请添加图片描述
端口已经修改为8000,所以后续跟的端口也是8000
请添加图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐