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