7.4.1 ConfigMap 介绍

资源对象 ConfigMap:

  • key-value
  • 也是一个中间层

image.png

  • 命名空间级

image.png

7.4.2 创建 ConfigMap

使用指令 kubectl 创建 ConfigMap

在命令行中设置 key-value:

  • ConfigMap 名称为 fortune-config

image.png

image.png

  • 使用多个 --from-literal

image.png

查看 ConfigMap 定义:

image.png

指定文件来创建 ConfigMap:

  1. $ kubectl create -f fortune-config.yaml

从文件内容创建 ConfigMap 条目

存储文件:

  • --from-file
  • key 为文件名
  1. $ kubectl create configmap my-config --from-file=config-file.conf
  2. # 手动指定 key 名称
  3. $ kubectl create configmap my-config --from-file=customkey=config-file.conf

从文件夹创建 ConfigMap

  1. $ kubectl create configmap my-config --from-file=/path/to/dir

合并不同选项

混合使用:
image.png
image.png

7.4.3 给容器传递 ConfigMap 条目作为环境变量

image.png

image.png

在 pod 中引用不存在的 ConfigMap

容器会启动失败, 之后再创建 ConfigMap, 失败的容器会自动启动.

  • configMapKeyRef.optional: true 表示即便 ConfigMap 不存在, 容器也要正常启动

7.4.4 一次性传递 ConfigMap 的所有条目作为环境变量

image.png

注意:

  • 如果 key 名不合法, 那么不会暴露该环境变量

7.4.5 传递 ConfigMap 条目作为命令行参数

无法在 pod.spec.containers.args 中直接引用 ConfigMap 的条目, 但是可以通过环境变量来引用

image.png

image.png

7.4.6 使用 configMap 卷将条目暴露为文件

将 ConfigMap 中的条目暴露成一个文件.

创建 ConfigMap

nginx 配置文件:

image.png

sleep-interval 文本文件.

image.png

创建 ConfigMap:

image.png

查看:

image.png

注意:

  • | 表示后续的条目值是多行字面量

在卷内使用 ConfigMap 的条目

就是挂载卷:

image.png

image.png
image.png

检查 Nginx 是否使用被挂载的配置文件

image.png

检查被挂载的 configMap 卷的内容

image.png

卷内暴露指定的 ConfigMap 条目

image.png

挂载某一文件夹会隐藏该文件夹中已存在的文件

ConfigMap 独立条目作为文件被挂载且不隐藏文件夹中的其他文件

image.png

subPath 属性:

image.png

为 configMap 卷中的文件设置权限

configMap 卷中所有文件的权限默认为644.

  • defaultMode 属性可以更改

image.png

7.4.7 更新应用配置且不重启应用程序

修改 ConfigMap

关闭 gzip 压缩:

  1. $ kubetcl edit configmap fortune-config

ConfigMap 被更新不久之后会自动更新卷中的对应文件.

通知 Nginx 重载配置

  1. $ kubectl exec fortune-configmap-volume -c web-server -- nginx -s reload

了解文件被自动更新的过程

符号链接:

image.png

配置文件 -> ..data -> ..498…; 配置文件被更新后会重新将 ..data 链接到新创建的文件夹上.

挂载至已存在文件夹的文件不会被更新

挂载部分文件到容器中, 该挂载方式被挂载的文件不会被更新.

不知到新版本怎样了.

了解更新 ConfigMap 的影响

  • pod 之间可能使用的配置会不一样