许多应用程序需要使用配置文件、命令行参数和环境变量的某种组合进行配置。在 OpenShift Dedicated 中,这些配置工件与镜像内容分离,以保持容器化应用程序的可移植性。
ConfigMap
对象提供了一种机制,可以在容器中注入配置数据,同时保持容器与 OpenShift Dedicated 的无关性。ConfigMap 可用于存储细粒度信息(如单个属性)或粗粒度信息(如整个配置文件或 JSON 块)。
ConfigMap
对象保存可以被 Pod 使用的配置数据的键值对,或者用于存储系统组件(如控制器)的配置数据。例如:
ConfigMap
对象定义
kind: ConfigMap
apiVersion: v1
metadata:
creationTimestamp: 2016-02-18T19:14:38Z
name: example-config
namespace: my-namespace
data: (1)
example.property.1: hello
example.property.2: world
example.property.file: |-
property.1=value-1
property.2=value-2
property.3=value-3
binaryData:
bar: L3Jvb3QvMTAw (2)
1 |
包含配置数据。 |
2 |
指向包含非 UTF-8 数据的文件,例如二进制 Java 密钥库文件。以 Base64 形式输入文件数据。 |
|
当您从二进制文件(例如图像)创建 ConfigMap 时,可以使用 `binaryData` 字段。
|
可以在 Pod 中通过多种方式使用配置数据。ConfigMap 可用于:
-
填充容器中的环境变量值
-
在容器中设置命令行参数
-
填充卷中的配置文件
用户和系统组件可以在 ConfigMap 中存储配置数据。
配置映射类似于密钥,但设计上更方便地支持处理不包含敏感信息 的字符串。
配置映射限制
必须先创建配置映射,然后才能在其 Pod 中使用其内容。
可以编写控制器来容忍缺少配置数据。请逐个案例咨询使用配置映射配置的各个组件。
Kubelet 仅支持对其从 API 服务器获取的 Pod 使用配置映射。
这包括使用 CLI 创建的任何 Pod,或间接由复制控制器创建的任何 Pod。这并不包括使用 OpenShift Dedicated 节点的 --manifest-url
标志、其 --config
标志或其 REST API 创建的 Pod,因为这些不是创建 Pod 的常用方法。