配置传入ConfigMap

配置传入ConfigMap的过程,即创建ConfigMap的过程,在创建时,可以将需要传给Pod中容器的信息以键/值对的形式写入ConfigMap中。

创建ConfigMap同样有两种方式:

  1. 使用指令创建(优选);

  2. 使用配置文件创建;

使用命令创建

在使用kubectl create configmap创建ConfigMap时,可以通过不同的参数,以不同的方式向ConfigMap中写入数据:

  1. --from-literal:最普通的写入方式,值为简单的字面量:

    例如,创建一个名为myconfigmap的ConfigMap,其包含foo=barone=two两个条目:

     kubectl create configmap myconfigmap --from-literal=foo=bar --from-literal=one=two
  2. --from-env-file:后面跟的是文件名,文件中存放的是键/值对形式的条目,它们会被批量传入ConfigMap中:

     # 先通过key=value的方式创建环境变量的文件
     cat << EOF > env.txt
     > config1=xxx
     > config2=yyy
     > EOF
     # 使用k8s命令创建
    kubectl create configmap myconfigmap --from-env-file=env.txt
  3. --from-file:将文件内容作为值写入:

    例如,创建一个名为myconfigmap的ConfigMap,其包含的文件内容为config-file.conf中的内容,其config-file.conf(因为不自定义的关系,所以默认与文件名一致):

     kubectl create configmap myconfigmap --from-file=config-file.conf

    当然,也可以手动指定键。例如,指定键名为customkey

     kubectl create configmap myconfigmap --from-file=customkey=config-file.conf

Tips: --from-file后面除了跟单个文件名外,同样可以跟目录名,其会将该目录下所有文件名合法的文件都传入ConfigMap中,即批量传入多个条目,但是这种情况下,无法单独指定键名。

使用配置文件创建

ConfigMap的配置文件非常简单,需要写入的数据都被存放在了configmap.data中,下面展示一个案例:

apiVersion: v1    # 例子一
kind: ConfigMap
metadata:
  name: myconfigmap
data:    # 以明文的方式保存
  config1: xxx    # config1是键,xxx是值
  config2: yyy

---        # 例子二
apiVersion: v1
kind: ConfigMap
metadata:
  name: myconfigmap
data:    # 以明文的方式保存ConfigMap信息
  logging.conf: |    # logging.conf是key,'|'是yaml中保留换行符的标识,即下面的四行在输入的时候其实是:class:...\nformatter...\nlevel...\nfilename...stamp.log
    class: logging.handlers.RotatingFileHandler
    formatter: precise
    level: INFO
    filename: %hostname-%timestamp.log

Last updated

Was this helpful?