一、为什么要引入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。