ConfigMap概述     

      ConfigMap
API资源提供了将配置注入容器的机制,ConfigMap可用于存储细粒度信息如单个属性,或粗粒度信息如整个配置文件或JSON对象。

     ConfigMap
API资源存储键/值对配置数据,这些数据可以在pods里使用。ConfigMap跟Secrets类似,但是ConfigMap可以更方便的处理不包含敏感信息的字符串。

ConfigMap有以下几种使用方式:

* 填充环境变量的值
* 设置容器内的命令行参数
* 填充卷的配置文件
 

命令行
$ configmap NAME [--from-file=[key=]source] [--from-literal=key1=value1]
[--dry-run]
 

1. 创建configmap

     创建ConfigMap的方式有4种:

* 直接在命令行中指定configmap参数创建,即--from-literal
* 指定文件创建,即将一个配置文件创建为一个ConfigMap--from-file=<文件>
* 指定目录创建,即将一个目录下的所有配置文件创建为一个ConfigMap,--from-file=<目录>
* 先写好标准的configmap的yaml文件,然后kubectl create -f 创建
1.1 从文件创建

   $ kubectl create configmap cumulx-test --from-file=xxxx

   当 --from-file指向一文件,key的名称是文件名称,value的值是这个文件的内容         



 

1.2 从目录创建

    $ kubectl create configmap cumulx-test --from-file=xxxx

   当
--from-file指向一个目录,每个目录中的文件直接用于填充ConfigMap中的key,key的名称是文件名称,value的值是这个文件的内容   



 

    指定data中的key

     $  kubectl create configmap test-data-key --from-file=test-aaa=aaa.txt



 

1.3 通过字面值创建

    通过kubectl create configmap创建ConfigMap使用字面值。--from-literal选项使用一个key=value语法

    $ kubectl create configmap test-literal --from-literal=key1=value1



 

1.4 编写yaml文件



 

2. 使用ConfigMap

      使用ConfigMap有三种方式:

* 第一种是通过环境变量的方式,直接传递给pod 
* 使用configmap中指定的key
* 使用configmap中所有的key
* 第二种是通过在pod的命令行下运行的方式(启动命令中)
* 第三种是作为volume的方式挂载到pod内
 

2.1 ConfigMap在环境变量中

    创建一个Pod,并将一个已经创建好的ConfigMap作为环境变量,注入到Pod中

   使用valueFrom、configMapKeyRef、name、key指定要用的key:   



    登陆容器查看:   



 

      通过envFrom、configMapRef、name使得configmap中的所有key/value对都自动变成环境变量:        



 

2.2 设置命令行参数用ConfigMap

 

 

configmap的热更新

       更新 ConfigMap 后:

* 使用该 ConfigMap 挂载的 Env 不会同步更新
* 使用该 ConfigMap 挂载的 Volume 中的数据需要一段时间(实测大概10秒)才能同步更新
     
 当ConfigMap以数据卷的形式挂载进Pod时,更新ConfigMap(或删掉重建ConfigMap),Pod内挂载的配置信息会热更新,但使用环境变量方式加载到pod,则不会自动更新(ENV
是在容器启动的时候注入的,启动之后 kubernetes 就不会再改变环境变量的值)。且同一个 namespace 中的 pod 的环境变量是不断累加的

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信