本文为您介绍如何在Pod中使用配置项。

背景信息

您可以在Pod中使用配置项,有多种使用场景,主要包括:
  • 使用配置项定义Pod环境变量
  • 通过配置项设置命令行参数
  • 在数据卷中使用配置项

更多关于配置项的信息,可以参见Configure a Pod to Use a ConfigMap

使用限制

您在Pod里使用配置项时,需要两者处于同一集群和命名空间中。

创建配置项

本示例创建配置项Special_Config,包含SPECIAL_LEVEL: verySPECIAL_TYPE: charm两个键值对。

YAML示例模板如下:
apiVersion: v1
kind: ConfigMap
metadata:
   name: special-config
   namespace: default
data:
   SPECIAL_LEVEL: very
   SPECIAL_TYPE: charm

使用配置项定义pod环境变量

  • 使用配置项的数据定义Pod环境变量
    1. 登录容器服务管理控制台
    2. 在控制台左侧导航栏中,单击集群
    3. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
    4. 在集群管理页左侧导航栏中,单击工作负载
    5. 无状态页签中,单击使用模板创建
    6. 选择示例模板或自定义,然后单击创建

      您可以在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的环境变量
    1. 在控制台左侧导航栏中,单击集群
    2. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
    3. 在集群管理页左侧导航栏中,单击工作负载
    4. 无状态页签中,单击使用模板创建
    5. 选择示例模板或自定义,然后单击创建

      如果您想在一个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:                ##引用sepcial-config配置文件的所有key/values键值对。
             - configMapRef:
                 name: special-config
         restartPolicy: Never
  • 通过配置项设置命令行参数
    1. 在控制台左侧导航栏中,单击集群
    2. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
    3. 在集群管理页左侧导航栏中,单击工作负载
    4. 无状态页签中,单击使用模板创建
    5. 选择示例模板或自定义,然后单击创建

      您可以使用配置项设置容器中的命令或者参数值,使用环境变量替换语法$(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

在数据卷中使用配置项

  1. 在控制台左侧导航栏中,单击集群
  2. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
  3. 在集群管理页左侧导航栏中,单击工作负载
  4. 无状态页签中,单击使用模板创建
  5. 选择样例模板或自定义,然后单击创建
    您也可以在数据卷里面使用配置项,在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