配置项创建后,可在工作负载环境变量、命令行参数和数据卷三个场景使用。
本节以下面这个ConfigMap为例,具体介绍ConfigMap的用法。
apiVersion: v1
kind: ConfigMap
metadata:
name: cce-configmap
data:
SPECIAL_LEVEL: Hello
SPECIAL_TYPE: CCE
须知:在Pod里使用ConfigMap时,需要Pod和ConfigMap处于同一集群和命名空间中。
您可以在创建工作负载时将配置项设置为环境变量,使用valueFrom参数引用ConfigMap中的Key/Value。
apiVersion: v1
kind: Pod
metadata:
name: configmap-pod-1
spec:
containers:
- name: test-container
image: busybox
command: [ "/bin/sh", "-c", "env" ]
env:
- name: SPECIAL_LEVEL_KEY
valueFrom: ##使用valueFrom来指定env引用配置项的value值
configMapKeyRef:
name: cce-configmap ##引用的配置文件名称
key: SPECIAL_LEVEL ##引用的配置项key
restartPolicy: Never
如果您需要将多个配置项的value值定义为pod的环境变量值,您只需要在pod中添加多个环境变量参数即可。
env:
- name: SPECIAL_LEVEL_KEY
valueFrom:
configMapKeyRef:
name: cce-configmap
key: SPECIAL_LEVEL
- name: SPECIAL_TYPE_KEY
valueFrom:
configMapKeyRef:
name: cce-configmap
key: SPECIAL_TYPE
如果要将一个配置项中所有数据都添加到环境变量中,可以使用 envFrom 参数,配置项中的 key 会成为 Pod 中的环境变量名称。
apiVersion: v1
kind: Pod
metadata:
name: configmap-pod-2
spec:
containers:
- name: test-container
image: busybox
command: [ "/bin/sh", "-c", "env" ]
envFrom:
- configMapRef:
name: cce-configmap
restartPolicy: Never
您可以使用配置项设置容器中的命令或者参数值,使用环境变量替换语法$(VAR_NAME)来进行。如下面的编排示例所示。
apiVersion: v1
kind: Pod
metadata:
name: configmap-pod-3
spec:
containers:
- name: test-container
image: busybox
command: [ "/bin/sh", "-c", "echo $(SPECIAL_LEVEL_KEY) $(SPECIAL_TYPE_KEY)" ]
env:
- name: SPECIAL_LEVEL_KEY
valueFrom:
configMapKeyRef:
name: cce-configmap
key: SPECIAL_LEVEL
- name: SPECIAL_TYPE_KEY
valueFrom:
configMapKeyRef:
name: cce-configmap
key: SPECIAL_TYPE
restartPolicy: Never
这个Pod运行后,输出如下内容。
Hello CCE
配置项也可以在数据卷里面使用,只需在创建工作负载时将配置项挂载到工作负载中即可。挂载完成后,最终生成以key为文件名, value为文件内容的配置文件。
apiVersion: v1
kind: Pod
metadata:
name: configmap-pod-4
spec:
containers:
- name: test-container
image: busybox
command: [ "/bin/sh", "-c", "ls /etc/config/" ] ##列出该目录下的文件名称
volumeMounts:
- name: config-volume
mountPath: /etc/config ##挂载到/etc/config目录下
volumes:
- name: config-volume
configMap:
name: cce-configmap
restartPolicy: Never
这个Pod运行后,在/etc/config目录下会生成SPECIAL_LEVEL和SPECIAL_TYPE两个文件,文件的内容为Hello和CCE。且运行时会输出如下内容,即cce-configmap中SPECIAL_LEVEL和SPECIAL_TYPE的名称。
SPECIAL_TYPE
SPECIAL_LEVEL
挂载ConfigMap到数据卷还可以在界面上进行操作,在创建工作负载时,设置容器的高级设置,选择数据存储,添加本地磁盘,选择ConfigMap即可配置。具体操作请参见配置项(ConfigMap)挂载。