ConfigMap管理

最近更新时间:2020-10-21 15:38:57

ConfigMap 是一种 API 对象,用来将非机密性的数据保存到健值对中。通过ConfigMap 可以将配置文件从容器镜像中解耦,从而增强容器应用的可移植性。ConfigMap 是有 key-value 类型的键值对,可以通过控制台创建对应的 ConfigMap 对象,也可以通过挂载数据卷、环境变量或在容器的运行命令中使用 ConfigMap。

容器服务控制台操作说明

创建ConfigMap

1、进入容器服务控制台,点击左侧导航栏中的【配置管理】-【ConfigMap】,进入ConfigMap列表页,如下图所示:

ConfigMap管理

2、点击【新建】,进入“创建 ConfigMap”页面,根据以下提示进行配置,如下图所示:

ConfigMap管理

  • 名称:输入要创建ConfigMap的名称。
  • 所在地域:请根据实际需求进行选择。
  • 部署集群:请根据实际需求进行选择。
  • 命名空间:请根据实际需求进行选择。
  • 配置项:请根据实际需求定义变量名和变量值。

3、点击【创建】,完成ConfigMap创建。

使用ConfigMap

方式一:通过挂载ConfigMap类型数据卷

1、进入容器服务控制台,点击左侧导航栏中的【工作负载】,选择任意类型,进入相应列表页。 例如选择【工作负载】-【Deployment】,进入Deployment列表页。

2、点击【新建】,进入“创建Deployment”页面,在存储卷配置中,选择“使用ConfigMap”类型,输入存储卷名称,如下图所示:

ConfigMap管理

3、点击【选择ConfigMap】,在“设置ConfigMap”弹窗中进行配置,如下图所示:

ConfigMap管理

  • 选择ConfigMap:请根据实际需求进行选择。
  • 挂载选项:有【全部挂载】以及【指定key挂载】两种方式,请根据实际需求进行选择。 注:当选择指定key挂载时,可以通过Items向特定路径挂载,如挂载路径是 /etc/config,子路径是dev,最终会存储在/etc/config/dev下。

4、点击【创建】,完成创建。

方式二:通过定义容器环境变量

1、进入容器服务控制台,点击左侧导航栏中的【工作负载】,选择任意类型,进入相应列表页。 例如选择【工作负载】-【Deployment】,进入Deployment列表页。

2、点击【新建】,进入“创建Deployment”页面,进行容器配置时,在环境变量项单击【添加环境变量】,如下图所示:

ConfigMap管理

3、在环境变量配置中,选择“引用ConfigMap”方式添加,输入变量名以及选择变量值/变量引用,如下图所示:

ConfigMap管理

4、点击【创建】,完成创建。

更新ConfigMap

1、进入容器服务控制台,点击左侧导航栏中的【配置管理】-【ConfigMap】,进入ConfigMap列表页,点击【编辑YAML】,如下图所示:

ConfigMap管理

2、在“更新 ConfigMap”页面,根据实际需求进行配置,单击【更新】完成更新。

删除ConfigMap

1、进入ConfigMap列表页,点击【删除】,如下图所示:

ConfigMap管理

2、在出现的弹窗中,点击【确认】即可删除ConfigMap。

Kubectl 命令操作说明

创建 ConfigMap

方式一:通过YAML文件创建ConfigMap

configmap-test.yaml示例:

apiVersion: v1
kind: ConfigMap
metadata:
  name: config-test
  namespace: default
data:
  SPECIAL_LEVEL: very
  SPECIAL_TYPE: charm
  • data:ConfigMap 的数据,以 key-value 形式呈现。

创建configmap-test.yaml

# kubectl apply -f configmap-test.yaml

方式二:通过kubectl create configmap命令直接创建ConfigMap

# kubectl create configmap <map-name> <data-source>

# <map-name>:ConfigMap对象的名称
# <data-source>:数据源,可以根据目录、文件或者直接创建ConfigMap对象。

使用 ConfigMap

方式一:通过挂载ConfigMap类型数据卷

configmap-volume.yaml示例:

apiVersion: v1
kind: Pod
metadata:
   name: pod1-test
spec:
   containers:
     - name: container-test
       image: ksyun/nginx:latest
       volumeMounts:                             #数据卷的挂载点
         - name: config-volume
           mountPath: /etc/config
   volumes:                                      #在pod级别设置卷,然后将其挂载到pod内的容器中
     - name: config-volume
       configMap:
         name: config-test                       #挂载的ConfigMap名称
   restartPolicy: Never

方式二:通过定义容器环境变量

configmap-env.yaml

apiVersion: v1
kind: Pod
metadata:
   name: pod2-test
spec:
   containers:
     - name: container-test
       image: ksyun/nginx:latest
       env:
         - name: SPECIAL_LEVEL_KEY
           valueFrom:
             configMapKeyRef:
               name: config-test                 # 挂载的ConfigMap名称
               key: SPECIAL_LEVEL               
   restartPolicy: Never

金山云,开启您的云计算之旅

免费注册