一 、云原生要素——配 置分离
ConfigMap:存储明文配置
Secret:存储密文、敏感配置、用户重要信息和密码 等。
配置更新直接同步容器,热加载,无需重启pod或者容 器;镜像和配置分离,可单独修改发布
二、ConfigMap
1. 概念
ConfigMap 是 K8S 中的资源对象,用于保存非机密性配 置,数据可以是键值对(key=value)形式,也可通过文 件形式保存。
特点:
ConfigMap 是 k8s 中的资源,相当于配置文件,可以 有一个或者多个
ConfigMap ConfigMap 可以做成 Volume,k8s pod 启动之后, 通过 volume 形式映射到容器内部指定目录。 容器中应用程序按照原有方式读取容器特定目录上的 配置文件。
在容器看来,配置文件就像是打包在容器内部特定目 录,整个过程对应用没有任何侵入。
2. ConfigMap 应用场景
ConfigMap 可以将配置信息和 Docker 镜像解耦,以便 于实现镜像的可移植性和可复用性,ConfigMap 是一系 列配置信息的集合,可直接注入到 Pod 以提供容器使 用。
ConfigMap 注入方式有两种:
将 ConfigMap 作为存储卷。
将 ConfigMap 通过 env 中 ConfigMapKeyRef 注入到 容器中。
3. ConfigMap 的局限性
ConfigMap 在设计上不是用来保存大量数据的,在 ConfigMap 中保存的配置信息不可超过 1MB,如果需要 保存超过该尺寸限制的数据,可使用挂载存储卷或使用 独立的数据库和文件服务。
4. 命令行创建 ConfigMap
5. 基于目录创建 ConfigMap
ConfigMap 支持在同一目录下创建多个 ConfigMap,但 只支持目录下的普通文件,其他形式的文件不支持, 如:子目录、符号链接、设备、管道文件等。
6. 基于文件创建 ConfigMap
使用单个文件创建 ConfigMap 时,在--from-file= 后需 要定义 key,若不定义则 key 默认为文件名。
7. 基于 YAML 创建 ConfigMap
看到一个管道符“|”就是一个键值对,可以建立多个配置 信息,后期可以直接引用 key 来使用定义好的配置