很多生产环境中的应用程序较为复杂,可能需要多个 config 文件,命令行参数和环境变量的组合。并且这些配置信息应该从镜像中解耦出来,以保证镜像的可移植性以及配置信息不被泄漏。社区使用 ConfigMap 满足这一需求。
ConfigMap 包含了一系列键值对,用于存储被 pod 或者系统组件(如 controller 等)访问的信息。
创建 ConfigMap
通过文件创建
from-file
的参数可以是单个文件,也可以是目录,如果多个文件可以使用多个 --from-file
参数。
1 | kubectl create configmap <name> --from-file=<file> |
使用 ConfigMap 中的信息
通过环境变量调用
假设已经创建了一个 ConfigMap, 信息如下:
1 | apiVersion: v1 |
定义 pod
1 | apiVersion: v1 |
pod 启动后会输出所有的环境变量信息,其中包括:
1 | SPECIAL_LEVEL_KEY=very |
设置命令行参数
configmap 还可以通过命令行注入,用户可以通过 $(VAR_NAME)
方式调用:
1 | apiVersion: v1 |
volume plugin
这是 configmap 最核心的用法,最基本的是通过文件名指定:
1 | apiVersion: v1 |
pod 定义:
1 | apiVersion: apps/v1beta1 |