使用配置项 配置项创建后,可在工作负载环境变量、命令行参数和数据卷三个场景使用。 本节以下面这个ConfigMap为例,具体介绍ConfigMap的用法。 apiVersion: v1 kind: ConfigMap metadata: name: cceconfigmap data: SPECIALLEVEL: Hello SPECIALTYPE: CCE 须知: 在Pod里使用ConfigMap时,需要Pod和ConfigMap处于同一集群和命名空间中。 通过配置项设置工作负载环境变量 您可以在创建工作负载时将配置项设置为环境变量,使用valueFrom参数引用ConfigMap中的Key/Value。 apiVersion: v1 kind: Pod metadata: name: configmappod1 spec: containers: name: testcontainer image: busybox command: [ "/bin/sh", "c", "env" ] env: name: SPECIALLEVELKEY valueFrom: 使用valueFrom来指定env引用配置项的value值 configMapKeyRef: name: cceconfigmap 引用的配置文件名称 key: SPECIALLEVEL 引用的配置项key restartPolicy: Never 如果您需要将多个配置项的value值定义为pod的环境变量值,您只需要在pod中添加多个环境变量参数即可。 env: name: SPECIALLEVELKEY valueFrom: configMapKeyRef: name: cceconfigmap key: SPECIALLEVEL name: SPECIALTYPEKEY valueFrom: configMapKeyRef: name: cceconfigmap key: SPECIALTYPE 如果要将一个配置项中所有数据都添加到环境变量中,可以使用 envFrom 参数,配置项中的 key 会成为 Pod 中的环境变量名称。 apiVersion: v1 kind: Pod metadata: name: configmappod2 spec: containers: name: testcontainer image: busybox command: [ "/bin/sh", "c", "env" ] envFrom: configMapRef: name: cceconfigmap restartPolicy: Never 通过配置项设置命令行参数 您可以使用配置项设置容器中的命令或者参数值,使用环境变量替换语法$(VARNAME)来进行。如下面的编排示例所示。 apiVersion: v1 kind: Pod metadata: name: configmappod3 spec: containers: name: testcontainer image: busybox command: [ "/bin/sh", "c", "echo $(SPECIALLEVELKEY) $(SPECIALTYPEKEY)" ] env: name: SPECIALLEVELKEY valueFrom: configMapKeyRef: name: cceconfigmap key: SPECIALLEVEL name: SPECIALTYPEKEY valueFrom: configMapKeyRef: name: cceconfigmap key: SPECIALTYPE restartPolicy: Never 这个Pod运行后,输出如下内容。 Hello CCE 使用配置项挂载到工作负载数据卷 配置项也可以在数据卷里面使用,只需在创建工作负载时将配置项挂载到工作负载中即可。挂载完成后,最终生成以key为文件名, value为文件内容的配置文件。 apiVersion: v1 kind: Pod metadata: name: configmappod4 spec: containers: name: testcontainer image: busybox command: [ "/bin/sh", "c", "ls /etc/config/" ]