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 下的一个文件,文件内容为对应的值。