zoukankan      html  css  js  c++  java
  • k8s用 ConfigMap 管理配置(13)

    一、ConfigMap介绍

      Secret 可以为 Pod 提供密码、Token、私钥等敏感数据;对于一些非敏感数据,比如应用的配置信息,则可以用 ConfigMap

      ConfigMap 的创建和使用方式与 Secret 非常类似,主要的不同是数据以明文的形式存放。

      与 Secret 一样,ConfigMap 也支持四种创建方式:

    1. 通过 --from-literal:

    kubectl create configmap myconfigmap --from-literal=config1=xxx --from-literal=config2=yyy

      每个 --from-literal 对应一个信息条目。

    2. 通过 --from-file:

    echo -n xxx > ./config1
    echo -n yyy > ./config2
    kubectl create configmap myconfigmap --from-file=./config1 --from-file=./config2

      每个文件内容对应一个信息条目。

    3. 通过 --from-env-file:

    cat << EOF > env.txt
    config1=xxx
    config2=yyy
    EOF
    kubectl create configmap myconfigmap --from-env-file=env.txt

      文件 env.txt 中每行 Key=Value 对应一个信息条目。

    4. 通过 YAML 配置文件:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: myconfigmap
    data:
      config1: mysqlip=192.168.11.6
      config2: zabbixip=192.168.11.7

      文件中的数据直接以明文输入。

    [root@ren7 yaml]# kubectl apply -f configmap.yml 
    configmap/myconfigmap created
    [root@ren7 yaml]# kubectl get configmap
    NAME          DATA   AGE
    myconfigmap   2      24s

      与 Secret 一样,Pod 也可以通过 Volume 或者环境变量的方式使用 Secret。

    (1)Volume 方式:

    [root@ren7 yaml]# cat pod5.yaml 
    apiVersion: v1
    kind: Pod
    metadata:
      name: mypod4
    spec:
      containers:
        - name: mypod4
          image: reg.yunwei.com/learn/busybox:latest
          args: 
          - /bin/sh
          - -c
          - sleep 10; touch /tmp/healthy; sleep 30000
          volumeMounts:
          - mountPath: "/etc/foo"
            name: foo
            readOnly: true
      volumes:
        - name: foo
          configMap: 
            name: myconfigmap
    [root@ren7 yaml]# kubectl apply -f pod5.yaml 
    pod/mypod4 created
    [root@ren7 yaml]# kubectl exec -it mypod4 sh
    / # cd /etc/foo/
    /etc/foo # ls
    config1  config2
    /etc/foo # cat config1 
    mysqlip=192.168.11.6/etc/foo # 
    /etc/foo # cat config2 
    zabbixip=192.168.11.7/etc/foo # 
    /etc/foo # exit

    (2)环境变量方式:

    [root@ren7 yaml]# cat pod6.yml 
    apiVersion: v1
    kind: Pod
    metadata:
      name: mypod5
    spec:
      containers:
        - name: mypod5
          image: reg.yunwei.com/learn/busybox:latest
          args: 
          - /bin/sh
          - -c
          - sleep 10; touch /tmp/healthy; sleep 30000
          env:
          - name: CONFIG_1
            valueFrom:
              configMapKeyRef:
                name: myconfigmap
                key: config1
          - name: CONFIG_2
            valueFrom:
              configMapKeyRef:
                name: myconfigmap
                key: config2
    [root@ren7 yaml]# kubectl apply -f pod6.yml 
    pod/mypod5 created
    [root@ren7 yaml]# kubectl exec -it mypod5 sh
    / # 
    / # echo $CONFIG_1
    mysqlip=192.168.11.6
    / # echo $CONFIG_2
    zabbixip=192.168.11.7/ # exit

    二、configmap实践

      大多数情况下,配置信息都以文件形式提供,所以在创建 ConfigMap 时通常采用 --from-file 或 YAML 方式,读取 ConfigMap 时通常采用 Volume 方式。

      比如给 Pod 传递如何记录日志的配置信息:

    (1)可以采用 --from-file 形式,则将其保存在文件 logging.conf 中,然后执行命令:kubectl create configmap myconfigmap1 --from-file=./logging.conf

    (2)如果采用 YAML 配置文件,其内容则为:

      注意别漏写了 Key logging.conf 后面的 | 符号。

      创建并查看 ConfigMap:

      在 Pod 中使用此 ConfigMap,配置文件为:

      ① 在 volume 中指定存放配置信息的文件相对路径为 myapp/logging.conf。
      ② 将 volume mount 到容器的 /etc 目录。

      创建 Pod 并读取配置信息:

      配置信息已经保存到 /etc/myapp/logging.conf 文件中。与 Secret 一样,Volume 形式的 ConfigMap 也支持动态更新,留给大家自己实践。

    小结

      我们学习了如何向 Pod 传递配置信息。如果信息需要加密,可使用 Secret;如果是一般的配置信息,则可使用 ConfigMap。

      Secret 和 ConfigMap 支持四种定义方法。Pod 在使用它们时,可以选择 Volume 方式或环境变量方式,不过只有 Volume 方式支持动态更新。

  • 相关阅读:
    笔记本硬盘接口SATA, PATA
    dB和dBm的区别
    SQL Server 存储过程分页方案比较
    SQL Server 输出参数OUTPUT
    安装iis5.1时找不到zClientm.exe的解决方法
    mac os x 10.5.8不通本网段
    SQL Server 存储过程分页大全(2005,2000)
    硬盘保修查询网站明细清单希捷硬盘保修查询西数硬盘保修查
    如何让SWT的窗口置顶(总在最上面)?
    ASP.NET(三) Web开发——常用服务器控件
  • 原文地址:https://www.cnblogs.com/renyz/p/11755276.html
Copyright © 2011-2022 走看看