配置项使您可以将配置文件与镜像分离,提高容器应用程序的可移植性。本文介绍如何在Pod中使用配置项。
使用场景
您可以在Pod中使用配置项,主要有以下几种使用场景:
关于配置项的更多信息,请参见Configure a Pod to Use a ConfigMap。
使用限制
在Pod中使用配置项时,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环境变量
使用配置项的数据定义Pod环境变量
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在无状态页面中,单击使用YAML创建资源。
选择示例模板或自定义,然后单击创建。
您可以在Pod中定义环境变量,可以使用
valueFrom
引用SPECIAL_LEVEL的Value值,从而定义Pod的环境变量。配置示例如下: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
将配置项的所有Key/Values配置为Pod的环境变量
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在无状态页面中,单击使用YAML创建资源。
选择示例模板或自定义,然后单击创建。
如果您想在一个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
通过配置项设置命令行参数
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在无状态页面中,单击使用YAML创建资源。
选择示例模板或自定义,然后单击创建。
您可以使用配置项设置容器中的命令或参数值,使用环境变量替换语法
$(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
在数据卷中使用配置项
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在无状态页面中,单击使用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