Kubernetes ConfigMap概念与创建

网友投稿 642 2022-10-18

Kubernetes ConfigMap概念与创建

Kubernetes  ConfigMap概念与创建

Secret 可以为 Pod 提供密码、Token、私钥等敏感数据 。对于一些非敏感数据,比如应用的配置信息,则可以用 ConfigMap。

ConfigMap 的创建和使用方式与 Secret 非常类似,主要的不同是数据以明文的形式存放。

configMap

描述信息ConfigMap 功能在 Kubernetes1.2 版本中引入,许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。ConfigMap API 给我们提供了向容器中注入配置信息的机制,ConfigMap 可以被用来保存单个属性,也可以用来保存整个配置文件或者 JSON 二进制大对象

现在有一千台nginx,和一千台nginx的配置文件需要修改,这里分了很多组,每一组的nginx的配置文件都不一样。这个时候时候管理起来就非常费劲了。

Configmap保存了nginx的配置文件,这个资源可以在后期创建Pod的时候获取configmap信息,不管多少个pod过来都可以申请同一个nginx config。并且对nginx config进行修改以后在pod当中也会发生变化,需要重新载入配置文件即可。

configmap的作用

configmap和secret是两种特殊的存储卷,它们不是给pod提供存储空间用的,而是给管理员或者用户提供了从外部向pod内部注入信息的方式.

configmap:把配置文件放在配置中心上,然后多个pod读取配置中心的配置文件,不过,configmap中的配置信息都是明文的,所以不安全;

secret:功能和configmap一样,只不过配置中心存储的配置文件不是明文的.configmap和secret也是专属于某个名称空间的.

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

典型的使用场景:

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

创建configmap的四种方式

目录方式(目录中的文件名为key,文件内容是value)

在指定目录下面有两个文件,每个文件里面定义了其属性。

在创建的时候只需要给configmap取一个名称,然后指定目录,那么目录下面的所有文件都会被创建出来。存储的结构依然是k-v结构,k是文件名称,key是文件里面定义的内容。

[root@k8s-master configmap]# cat game.properties enemies=alienslives=3enemies.cheat=trueenemies.cheat.level=noGoodRottensecret.code.passphrase=UUDDLRLRBABASsecret.code.allowed=truesecret.code.lives=30[root@k8s-master configmap]# cat ui.properties color.good=purplecolor.bad=yellowallow.textmode=truehow.nice.to.look=fairlyNice[root@k8s-master configmap]# lsgame.properties ui.properties[root@k8s-master configmap]# kubectl create configmap game-config --from-file=.configmap/game-config created[root@k8s-master configmap]# kubectl get cmNAME DATA AGEgame-config 2 18s#通过describe去查看,看到的也是键值保存形式[root@k8s-master configmap]# kubectl describe cm game-configName: game-configNamespace: defaultLabels: Annotations: Data====game.properties:----enemies=alienslives=3enemies.cheat=trueenemies.cheat.level=noGoodRottensecret.code.passphrase=UUDDLRLRBABASsecret.code.allowed=truesecret.code.lives=30ui.properties:----color.good=purplecolor.bad=yellowallow.textmode=truehow.nice.to.look=fairlyNiceEvents:

--from-file指定在目录下的所有文件都会被用在 ConfigMap 里面创建一个键值对,键的名字就是文件名,值就是文件的内容

使用文件

创建只要指定为一个文件就可以从单个文件中创建 ConfigMap,和目录的创建方式没有什么区别,上面指定的是目录,一个指定的是文件的本体。

[root@k8s-master configmap]# kubectl create configmap game-config1 --from-file=game.properties configmap/game-config1 created[root@k8s-master configmap]# kubectl describe cm game-config1Name: game-config1Namespace: defaultLabels: Annotations: Data====game.properties:----enemies=alienslives=3enemies.cheat=trueenemies.cheat.level=noGoodRottensecret.code.passphrase=UUDDLRLRBABASsecret.code.allowed=truesecret.code.lives=30Events:

使用字面值创建

使用文字值创建,利用—from-literal参数传递配置信息,该参数可以使用多次,格式如下(指定键名键值)。

这里的键名是 special.how special.type。

[root@k8s-master configmap]# kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charmconfigmap/special-config created[root@k8s-master configmap]# kubectl describe cm special-config Name: special-configNamespace: defaultLabels: Annotations: Data====special.how:----veryspecial.type:----charmEvents:

编写configmap的yaml文件

[root@k8s-master configmap]# cat configmap.yml apiVersion: v1kind: ConfigMapmetadata: name: config-map-ymldata: db_host: "172.25.60.250" db_port: "3306"[root@k8s-master configmap]# kubectl apply -f configmap.yml configmap/config-map-yml created[root@k8s-master configmap]# kubectl describe cm config-map-ymlName: config-map-ymlNamespace: defaultLabels: Annotations: Data====db_host:----172.25.60.250db_port:----3306Events:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Springboot如何获取yml、properties参数
下一篇:bfmvc:模仿springmvc的轻量级web框架,适合学习和搭建小型web项目使用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~