配置 ConfigMap
ConfigMap 允许您将配置工件与镜像内容解耦,以保持容器化应用程序的可移植性。以下各节将定义 ConfigMap 以及如何创建和使用它们。
目录
了解 ConfigMapConfigMap 限制ConfigMap 示例使用 web console 创建 ConfigMap使用新的 web console 创建 ConfigMap从 Applications 视图创建或更新从 Clusters 视图创建或更新使用 CLI 创建 ConfigMap操作使用 CLI 查看、编辑和删除在 Pod 中使用 ConfigMap 的方式作为环境变量作为卷中的文件作为单独的环境变量ConfigMap 与 Secret 的对比了解 ConfigMap
许多应用程序需要通过配置文件、命令行参数和环境变量的某种组合进行配置。在 OpenShift Container Platform 中,这些配置工件与镜像内容解耦,以保持容器化应用程序的可移植性。
ConfigMap 对象提供了将配置数据注入容器的机制,同时使容器不依赖于 OpenShift Container Platform。ConfigMap 可用于存储细粒度信息,例如单个属性;也可用于存储粗粒度信息,例如整个配置文件或 JSON blob。
ConfigMap 对象保存键值对形式的配置数据,这些数据可在 Pod 中使用,也可用于存储控制器等系统组件的配置数据。例如:
注意:当您从二进制文件(例如镜像)创建 ConfigMap 时,可以使用 binaryData 字段。
配置数据可以通过多种方式在 Pod 中使用。ConfigMap 可用于:
- 为容器中的环境变量赋值
- 在容器中设置命令行参数
- 在卷中填充配置文件
用户和系统组件都可以将配置数据存储在 ConfigMap 中。 ConfigMap 类似于 secret,但其设计更便于处理不包含敏感信息的字符串。
ConfigMap 限制
- 必须先创建 ConfigMap,才能在 Pod 中使用其内容。
- 可以编写控制器以容忍缺失的配置数据。请根据具体情况查阅使用 ConfigMap 配置的各个组件。
ConfigMap对象位于某个项目中。- 它们只能被同一项目中的 Pod 引用。
- Kubectl 仅支持将 ConfigMap 用于它从 API server 获取的 Pod。这包括使用 CLI 创建的任何 Pod,或由 replication controller 间接创建的 Pod。它不包括使用 OpenShift Container Platform 节点的
--manifest-url标志、--config标志或其 REST API 创建的 Pod,因为这些并不是创建 Pod 的常见方式。
Pod 只能使用同一 namespace 中的 ConfigMap。
ConfigMap 示例
现在您可以在 Pod 中使用 app-config。
使用 web console 创建 ConfigMap
-
转到 Container Platform。
-
在左侧边栏中,单击 Configuration > ConfigMap。
-
单击 Create ConfigMap。
-
请参考以下说明配置相关参数。
批量添加格式示例:
-
单击 Create。
使用新的 web console 创建 ConfigMap
本页面主要描述传统控制台的工作流,但在新的 web console 中,也可以从不同视图访问相同功能。
从 Applications 视图创建或更新
当 ConfigMap 作为当前项目范围的一部分进行管理时,请使用 Applications 视图。
在从此视图创建或更新 ConfigMap 之前,请确认:
- 所选 cluster 已与当前项目关联
- 目标 namespace 与使用该配置的工作负载所使用的 namespace 相同
- 键、文件名和值格式与工作负载读取配置的方式匹配
- 之后 ConfigMap 会出现在所选项目和 cluster 上下文中
从 Clusters 视图创建或更新
当您从具体 cluster 开始,并将 ConfigMap 作为该 cluster 中的 namespace 资源进行管理时,请使用 Clusters 视图。
在从此视图创建或更新 ConfigMap 之前,请确认:
- 您已先打开目标 cluster
- 您已在该 cluster 中选择或确认目标 namespace
- 您关注的是 namespace 本地的工作负载影响,而不是项目成员关系
- 之后 ConfigMap 会出现在预期的 namespace 中
使用 CLI 创建 ConfigMap
或者从文件创建:
操作
您可以单击列表页右侧的 (⋮),或在详情页右上角单击 Actions,按需更新或删除 ConfigMap。
对 ConfigMap 的更改会影响引用该配置的工作负载,因此请提前阅读操作说明。
使用 CLI 查看、编辑和删除
在 Pod 中使用 ConfigMap 的方式
作为环境变量
每个键都会成为容器中的一个环境变量。
作为卷中的文件
每个键都是 /etc/config 下的一个文件,文件内容就是其值。