本文介绍如何在容器组Pod中使用配置项。
背景信息
您可以在Pod中使用配置项,主要适用于以下场景:
使用配置项定义Pod环境变量。
通过配置项设置命令行参数。
在数据卷中使用配置项。
关于配置项的更多信息,请参见Configure a Pod to Use a ConfigMap。
使用限制
在Pod里使用配置项时,需要两者处于同一集群和命名空间。
创建配置项
本示例创建配置项special-config,包含SPECIAL_LEVEL: very和SPECIAL_TYPE: charm两个键值对。详细操作,请参见管理配置项。
YAML示例模板如下:
apiVersion: v1
kind: ConfigMap
metadata:
name: special-config
namespace: default
data:
SPECIAL_LEVEL: very
SPECIAL_TYPE: charm使用配置项定义Pod环境变量
登录容器计算服务控制台,在左侧导航栏选择集群列表。
-
在集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情。
-
在集群管理页左侧导航栏,选择。
单击使用YAML创建资源。选择示例模板或自定义,然后单击创建。
示例一:使用配置项的数据定义Pod环境变量
可在Pod中定义环境变量,使用valueFrom引用SPECIAL_LEVEL的Value值,从而定义Pod的环境变量,YAML示例模板如下:
apiVersion: v1
kind: Pod
metadata:
name: config-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: special-config ##引用的配置文件名称。
key: SPECIAL_LEVEL ##引用的配置项key。
restartPolicy: Never预期输出:
容器启动后,仅会打印出指定的一个环境变量 SPECIAL_LEVEL_KEY:
SPECIAL_LEVEL_KEY=very示例二:将配置项的所有Key/Values配置为Pod的环境变量
如需在一个Pod中将配置项的所有Key/Values键值对配置为Pod的环境变量,可以使用envFrom参数,配置项中的Key会成为Pod中的环境变量名称。
apiVersion: v1
kind: Pod
metadata:
name: config-pod-2
spec:
containers:
- name: test-container
image: busybox
command: [ "/bin/sh", "-c", "env" ]
envFrom: ##引用special-config配置文件的所有key/values键值对。
- configMapRef:
name: special-config
restartPolicy: Never预期输出:
使用 envFrom 会将 ConfigMap 中所有的 Key 作为环境变量导入。容器启动后会显示所有定义的变量:
SPECIAL_LEVEL=very
SPECIAL_TYPE=charm示例三:通过配置项设置命令行参数
可使用配置项设置容器中的命令或者参数值,通过使用环境变量替换语法$(VAR_NAME)来进行。
apiVersion: v1
kind: Pod
metadata:
name: config-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: special-config
key: SPECIAL_LEVEL
- name: SPECIAL_TYPE_KEY
valueFrom:
configMapKeyRef:
name: special-config
key: SPECIAL_TYPE
restartPolicy: Never预期输出:
容器通过 command 执行了 echo 命令,该命令通过 $(VAR_NAME) 语法引用了环境变量,输出结果为拼接后的字符串:
very charm在数据卷中使用配置项
登录容器计算服务控制台,在左侧导航栏选择集群列表。
-
在集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情。
-
在集群管理页左侧导航栏,选择。
在无状态页面中,单击使用YAML创建资源。
选择样例模板或自定义,然后单击创建。
您也可以在数据卷里面使用配置项,在Volumes下指定配置项名称,会将Key/Values的数据存储到MountPath路径下(本例中是/etc/config)。最终生成以Key为文件名,Values为文件内容的配置文件。
下面是一个编排示例。
apiVersion: v1 kind: Pod metadata: name: config-pod-4 spec: containers: - name: test-container image: busybox command: [ "/bin/sh", "-c", "ls /etc/config/" ] ##列出该目录下的文件名。 volumeMounts: - name: config-volume mountPath: /etc/config volumes: - name: config-volume configMap: name: special-config restartPolicy: Never运行Pod后,会输出配置项的Key。
SPECIAL_TYPE SPECIAL_LEVEL