许多应用程序需要使用配置文件、命令行参数和环境变量的某种组合进行配置。在 Red Hat OpenShift Service on AWS 中,这些配置工件与镜像内容解耦,以保持容器化应用程序的可移植性。
ConfigMap
对象提供了一种机制,可以在保持容器与 Red Hat OpenShift Service on AWS 无关的情况下,将配置数据注入容器。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 |
指向包含非 UTF8 数据的文件,例如二进制 Java 密钥库文件。输入 Base64 中的文件数据。 |
|
当您从二进制文件(如图像)创建 ConfigMap 时,可以使用 `binaryData` 字段。
|
配置数据可以通过多种方式在 Pod 中使用。ConfigMap 可用于:
-
填充容器中的环境变量值
-
设置容器中的命令行参数
-
填充卷中的配置文件
用户和系统组件可以在 ConfigMap 中存储配置数据。
ConfigMap 类似于 Secret,但更方便地支持处理不包含敏感信息的字符串。
ConfigMap 限制
必须先创建 ConfigMap,然后才能在 Pod 中使用其内容。
控制器可以编写成容忍缺少配置数据。针对个别使用 ConfigMap 配置的组件,请逐个案例进行咨询。
Kubelet 仅支持对从 API 服务器获取的 Pod 使用 ConfigMap。
这包括使用 CLI 或间接地从复制控制器创建的任何 Pod。它不包括使用 Red Hat OpenShift Service on AWS 节点的 `--manifest-url` 标志、`--config` 标志或其 REST API 创建的 Pod,因为这些不是创建 Pod 的常用方法。