许多应用程序需要使用配置文件、命令行参数和环境变量的某种组合进行配置。在OpenShift Container Platform中,这些配置工件与镜像内容解耦,以保持容器化应用程序的可移植性。
ConfigMap
对象提供机制,用于将容器与配置数据注入,同时保持容器与OpenShift Container Platform无关。ConfigMap可用于存储细粒度信息(如单个属性)或粗粒度信息(如整个配置文件或JSON Blob)。
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 |
指向包含非UTF8数据的文件,例如二进制Java密钥库文件。输入Base 64中的文件数据。 |
|
从二进制文件(例如图像)创建ConfigMap时,可以使用binaryData 字段。
|
配置数据可以通过多种方式在Pod中使用。ConfigMap可用于:
-
填充容器中的环境变量值
-
在容器中设置命令行参数
-
在卷中填充配置文件
配置映射类似于密钥,但设计用于更方便地支持使用不包含敏感信息的字符串。
配置映射限制
必须先创建配置映射,然后才能在 Pod 中使用其内容。
可以编写控制器来容忍缺失的配置数据。请针对使用配置映射配置的各个组件逐个案例进行咨询。
Kubelet 仅支持对其从 API 服务器获取的 Pod 使用配置映射。
这包括使用 CLI 创建的任何 Pod,或间接由复制控制器创建的 Pod。这并不包括使用 OpenShift Container Platform 节点的--manifest-url
标志、其--config
标志或其 REST API 创建的 Pod,因为这些不是创建 Pod 的常用方法。