当前位置: 首页 > Linux

K8S实战(14)-ConfigMap对象

时间:2023-04-07 03:28:21 Linux

前言ConfigMap对象可用于管理公共的、非机密的配置信息,并以纯文本形式存储。秘密对象用于管理重要的、机密的和未公开的信息,例如秘密密钥和密码。ConfigMap对象可以实现程序的配置与程序本身的解耦,从而使程序的可移植性更强。更新历史20200705-初稿-左成礼原文地址-https://blog.zuolinux.com/2020/07/05/about-configmap.html从目录/文件创建ConfigMap从目录configmapwgethttps://kubernetes创建mkdir。io/examples/configmap/game.properties-Oconfigmap/game.propertieswgethttps://kubernetes.io/examples/configmap/ui.properties-Oconfigmap/ui.propertieskubectl创建configmapgame-config--from-file=configmap/可以看到两个文件的内容被合并存储在data中,文件名转换为key#kubectlgetconfigmapgame-config-oyamlapiVersion:v1data:game.properties:|-enemies=外星人lives=3enemies.cheat=trueenemys.cheat.level=noGoodRottensecret.code.passphrase=UUDDLRLRBABASsecret.code.allowed=truesecret.code.lives=30ui.properties:|color.good=紫色color.bad=黄色allow.textmode=truehow.nice.to.look=fairlyNicekind:ConfigMap。.....通过文件创建kubectlcreateconfigmapgame-config-2--from-file=configmap/game.properties通过多个文件创建的效果和通过目录创建是一样的kubectlcreateconfigmapgame-config-2--from-file=configmap/game.properties--from-file=configmap/ui.properties从环境文件创建ConfigMap使用--from-env-file选项#下载示例文件到`configmap/`目录wgethttps://kubernetes.io/examples/configmap/game-env-file.properties-Oconfigmap/game-env-file.properties#kubectlcreateconfigmapgame-config-env-file--from-env-file=configmap/game-env-file.propertiesconfigmap/game-config-env-filecreated查看#kubectlgetconfigmapgame-config-env-file-oyamlapiVersion:v1data:allowed:'"true"'enemy:alienslives:"3"kind:ConfigMap可以看到内容文件并直接存储将configmap数据作为键值对,而不用文件名的key对应多行值env文件特点:env文件中的每一行必须是VAR=VAL格式。以#开头的行(即注释)将被忽略。空行将被忽略。报价不会被特殊对待(即它们将成为ConfigMap值的一部分)。当使用多个--from-env-files时,只有最后一个env文件有效。当作为一个Pod中的volume使用时,会出现多个文件,文件名是data中的key。定义从文件创建ConfigMap时要使用的键默认文件名是键名指定键名kubectlcreateconfigmapgame-config-3--from-file==命令行指定的key/value值不是从文件中获取的,直接命令行指定kubectlcreateconfigmapspecial-config--from-literal=special.how=very--from-literal=special.type=charm在Pod中挂载ConfigMap使用卷挂载方式使用ConfigMap创建ConfigMap,命名为special-configcatconfigmap-multikeys.yamlapiVersion:v1kind:ConfigMapmetadata:name:special-confignamespace:defaultdata:SPECIAL_LEVEL:verySPECIAL_TYPE:charmCreatePodcatpod-configmap-volume.yamlapiVersion:v1kind:Podmetadata:name:dapi-test-podspec:containers:-name:test-containerimage:busybox命令:["/bin/sh","-c","ls/etc/config/"]volumeMounts:-name:config-volumemountPath:/etc/configvolumes:-name:config-volumeconfigMap:name:special-configrestartPolicy:Never在Pod配置文件中,创建一个名为Forconfig的卷-volume,volume挂载一个名为special-config的configMap在容器中,将名为config-volume的volume挂载到系统路径/etc/config中,查看结果。容器执行命令ls/etc/config/,我们可以看到容器日志#kubectllogsdapi-test-podSPECIAL_LEVELSPECIAL_TYPE可以看到/etc/config目录下出现了一个名为ConfigMapkey的文件,内容就是value对应于ConfigMap键。结论volume方式挂载的ConfigMap可以自动更新。使用环境变量方式的ConfigMaps无法自动更新。ConfigMap可以理解为Linux中的/etc目录。ConfigMap必须存在于被引用的Pod之前,否则Pod无法启动。每个ConfigMap只能被同一命名空间中的Pod引用。联系我微信公众号:zuolinux_com