Configuring ConfigMap
Config maps 允许您将配置工件与镜像内容解耦,以保持容器化应用的可移植性。 以下章节定义了 config maps 以及如何创建和使用它们。
目录
Understanding Config MapsConfig Map 限制ConfigMap 示例通过 Web 控制台创建 ConfigMap通过 CLI 创建 ConfigMap操作通过 CLI 查看、编辑和删除Pod 中使用 ConfigMap 的方式作为环境变量作为卷中的文件作为单个环境变量ConfigMap 与 Secret 的对比Understanding Config Maps
许多应用程序需要通过配置文件、命令行参数和环境变量的某种组合进行配置。在 OpenShift Container Platform 中,这些配置工件与镜像内容解耦,以保持容器化应用的可移植性。
ConfigMap 对象提供了向容器注入配置信息的机制,同时保持容器对 OpenShift Container Platform 的无感知。config map 可用于存储细粒度的信息,如单个属性,也可存储粗粒度的信息,如整个配置文件或 JSON 数据块。
ConfigMap 对象保存键值对形式的配置信息,这些信息可以被 Pod 消费,或用于存储系统组件(如控制器)的配置信息。例如:
注意:当您从二进制文件(如镜像)创建 config map 时,可以使用 binaryData 字段。
配置数据可以通过多种方式在 Pod 中被消费。config map 可用于:
- 填充容器中的环境变量值
- 设置容器的命令行参数
- 在卷中填充配置文件
用户和系统组件都可以将配置信息存储在 config map 中。 config map 类似于 secret,但设计上更方便处理不包含敏感信息的字符串。
Config Map 限制
- 必须先创建 config map,才能在 Pod 中消费其内容。
- 控制器可以编写为容忍缺失的配置信息。请根据具体使用 config map 配置的组件逐一确认。
ConfigMap对象存在于项目中。- 只能被同一项目中的 Pod 引用。
- Kubectl 仅支持对从 API 服务器获取的 Pod 使用 config map。这包括通过 CLI 创建的 Pod,或通过复制控制器间接创建的 Pod。不包括通过 OpenShift Container Platform 节点的
--manifest-url标志、--config标志或其 REST API 创建的 Pod,因为这些不是常见的 Pod 创建方式。
Pod 只能使用同一命名空间内的 ConfigMaps。
ConfigMap 示例
您现在可以在 Pod 中使用 app-config。
通过 Web 控制台创建 ConfigMap
-
进入 Container Platform。
-
在左侧边栏点击 Configuration > ConfigMap。
-
点击 Create ConfigMap。
-
参考以下说明配置相关参数。
批量添加格式示例:
-
点击 Create。
通过 CLI 创建 ConfigMap
或者从文件创建:
操作
您可以点击列表页右侧的 (⋮) 按钮,或在详情页右上角点击 Actions,根据需要更新或删除 ConfigMap。
ConfigMap 的变更会影响引用该配置的工作负载,请提前阅读操作说明。
通过 CLI 查看、编辑和删除
Pod 中使用 ConfigMap 的方式
作为环境变量
每个键都会成为容器中的一个环境变量。
作为卷中的文件
每个键对应 /etc/config 下的一个文件,文件内容为对应的值。