一、为什么要引入ConfigMap¶
1.1 传统配置管理¶
传统架构中,配置文件往往被保存在宿主机上,程序启动时可以指定某个配置文件,但是使用容器部署时,容器所在的节点并不固定,所以不能使用这种方式,此处在构建镜像时,如果把配置文件也放在容器里面,那么配置文件一旦有更改的话,也是一件非常麻烦的事情。

1.2 云原生配置管理¶
Kubernetes抽象了一个ConfigMap的概念,将配置与Pod和组件分开,这有助于保持工作负载的可移植性,使配置更易于更改和管理。比如在生产环境中,可以将Nginx、Redis等应用的配置文件存储在ConfigMap上,然后将其挂载即可使用。

二、什么是ConfigMap¶
ConfigMap 是一种 API 对象,用来将非机密性的数据保存到键值对中。使用时, Pods可以将其用作环境变量、命令行参数或者存储卷中的配置文件。
ConfigMap 将你的环境配置信息和容器镜像解耦,便于应用配置的修改。
ConfigMap也是按Namespace隔离的,不同的Namespace之间ConfigMap的名称可以相同,但是不能跨Namespace进行访问。所以创建ConfigMap,可以使用-n指定资源所在的Namespace(命名空间),默认创建在default命名空间下。
另外,目前ConfigMap是不支持备份和还原。
注意:ConfigMap 并不提供保密或者加密功能。 如果你想存储的数据是机密的,请使用Secret, 或者使用其他第三方工具来保证你的数据的私密性,而不是用 ConfigMap。