微信公众号搜索 DevOps和k8s全栈技术 ,即可关注,也可扫描文章最后的二维码关注公众号,每天会分享技术文章供大家阅读参考哈~

前言

使用 ConfigMap 来将你的配置数据和应用程序代码分开。比如,假设你正在开发一个应用,它可以在你自己的电脑上(用于开发)和在云上(用于实际流量)运行。你的代码里有一段是用于查看环境变量 ​​DATABASE_HOST​​​,在本地运行时,你将这个变量设置为 ​​localhost​​,在云上,你将其设置为引用 Kubernetes 集群中的公开数据库 Service 中的组件。这让你可以获取在云中运行的容器镜像,并且如果有需要的话,在本地调试完全相同的代码。

ConfigMap 对象

ConfigMap 是一个 API 对象,让你可以存储其他对象所需要使用的配置。和其他 Kubernetes 对象都有一个 spec 不同的是,ConfigMap 使用 data 块来存储元素(键名)和它们的值。ConfigMap 的名字必须是一个合法的 DNS 子域名。

ConfigMaps 和 Pods

你可以写一个引用 ConfigMap 的 Pod 的 ​​spec​​,并根据 ConfigMap 中的数据在该 Pod 中配置容器。这个 Pod 和 ConfigMap 必须要在同一个 命名空间 中。这是一个 ConfigMap 的示例,它的一些键只有一个值,其他键的值看起来像是配置的片段格式。

apiVersion: v1
kind: Pod
metadata:
name: configmap-demo-pod
spec:
containers:
- name: demo
image: game.example/demo-game
env:
# 定义环境变量
- name: PLAYER_INITIAL_LIVES # 请注意这里和 ConfigMap 中的键名是不一样的
valueFrom:
configMapKeyRef:
name: game-demo # 这个值来自 ConfigMap
key: player_initial_lives # 需要取值的键
- name: UI_PROPERTIES_FILE_NAME
valueFrom:
configMapKeyRef:
name: game-demo
key: ui_properties_file_name
volumeMounts:
- name: config
mountPath: "/config"
readOnly: true
volumes:
# 您可以在 Pod 级别设置卷,然后将其挂载到 Pod 内的容器中
- name: config
configMap:
# 提供你想要挂载的 ConfigMap 的名字
name: game-demo

ConfigMap 不会区分单行属性值和多行类似文件的值,重要的是 Pods 和其他对象如何使用这些值。比如,定义一个卷,并将它作为 ​​/config​​​ 文件夹安装到 ​​demo​​ 容器内,并创建四个文件:


  • ​/config/player_initial_lives​
  • ​/config/ui_properties_file_name​
  • ​/config/game.properties​
  • ​/config/user-interface.properties​

如果你要确保 ​​/config​​​ 只包含带有 ​​.properties​​​ 扩展名的文件,可以使用两个不同的 ConfigMaps,并在 ​​spec​​​ 中同时引用这两个 ConfigMaps 来创建 Pod。第一个 ConfigMap 定义了 ​​player_initial_lives​​​ 和 ​​ui_properties_file_name​​​,第二个 ConfigMap 定义了 kubelet 放进 ​​/config​​ 的文件。


注意:ConfigMap 最常见的用法是为同一命名空间里某 Pod 中运行的容器执行配置。您也可以单独使用 ConfigMap。比如,您可能会遇到基于 ConfigMap 来调整其行为的 插件 或者 operator。




学无止境,了解更多关于kubernetes/docker/devops/openstack/openshift/linux/IaaS/PaaS相关内容,想要获取更多资料和免费视频,可按如下方式进入技术交流群

                            ​

微信公众号


                                     长按指纹关注公众号​????

kubernetes ConfigMap存储卷_kubernetes

                                  ​您的关注是我的动力~~~
​​