7.4.1 ConfigMap 介绍
资源对象 ConfigMap:
- key-value
- 也是一个中间层

- 命名空间级

7.4.2 创建 ConfigMap
使用指令 kubectl 创建 ConfigMap
在命令行中设置 key-value:
- ConfigMap 名称为 fortune-config


- 使用多个
--from-literal

查看 ConfigMap 定义:

指定文件来创建 ConfigMap:
$ kubectl create -f fortune-config.yaml
从文件内容创建 ConfigMap 条目
存储文件:
--from-file- key 为文件名
$ kubectl create configmap my-config --from-file=config-file.conf# 手动指定 key 名称$ kubectl create configmap my-config --from-file=customkey=config-file.conf
从文件夹创建 ConfigMap
$ kubectl create configmap my-config --from-file=/path/to/dir
合并不同选项
混合使用:

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


在 pod 中引用不存在的 ConfigMap
容器会启动失败, 之后再创建 ConfigMap, 失败的容器会自动启动.
configMapKeyRef.optional: true表示即便 ConfigMap 不存在, 容器也要正常启动
7.4.4 一次性传递 ConfigMap 的所有条目作为环境变量

注意:
- 如果 key 名不合法, 那么不会暴露该环境变量
7.4.5 传递 ConfigMap 条目作为命令行参数
无法在 pod.spec.containers.args 中直接引用 ConfigMap 的条目, 但是可以通过环境变量来引用


7.4.6 使用 configMap 卷将条目暴露为文件
将 ConfigMap 中的条目暴露成一个文件.
创建 ConfigMap
nginx 配置文件:

sleep-interval 文本文件.

创建 ConfigMap:

查看:

注意:
|表示后续的条目值是多行字面量
在卷内使用 ConfigMap 的条目
就是挂载卷:



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

检查被挂载的 configMap 卷的内容

卷内暴露指定的 ConfigMap 条目

挂载某一文件夹会隐藏该文件夹中已存在的文件
ConfigMap 独立条目作为文件被挂载且不隐藏文件夹中的其他文件

subPath 属性:

为 configMap 卷中的文件设置权限
configMap 卷中所有文件的权限默认为644.
- defaultMode 属性可以更改

7.4.7 更新应用配置且不重启应用程序
修改 ConfigMap
关闭 gzip 压缩:
$ kubetcl edit configmap fortune-config
ConfigMap 被更新不久之后会自动更新卷中的对应文件.
通知 Nginx 重载配置
$ kubectl exec fortune-configmap-volume -c web-server -- nginx -s reload
了解文件被自动更新的过程
符号链接:

配置文件 -> ..data -> ..498…; 配置文件被更新后会重新将 ..data 链接到新创建的文件夹上.
挂载至已存在文件夹的文件不会被更新
挂载部分文件到容器中, 该挂载方式被挂载的文件不会被更新.
不知到新版本怎样了.
了解更新 ConfigMap 的影响
- pod 之间可能使用的配置会不一样
