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 方式支持动态更新。

  • 相关阅读:
    BZOJ2821 作诗(Poetize) 【分块】
    BZOJ2724 蒲公英 【分块】
    Codeforces 17E Palisection 【Manacher】
    BZOJ2565 最长双回文串 【Manacher】
    Codeforces 25E Test 【Hash】
    CODEVS3013 单词背诵 【Hash】【MAP】
    HDU2825 Wireless Password 【AC自动机】【状压DP】
    HDU2896 病毒侵袭 【AC自动机】
    HDU3065 病毒侵袭持续中【AC自动机】
    HDU2222 Keywords Search 【AC自动机】
  • 原文地址:https://www.cnblogs.com/renyz/p/11755276.html
Copyright © 2011-2022 走看看