ConfigMap 是用来以键值对(key-value)的方式存储非敏感信息。Pod可以通过环境变量、命令行参数或者卷挂载等方式使用ConfigMap.
ConfigMap 可以将环境配置与具体的应用程序进行解耦,这意味着可以提升应用的可移植性。
需要注意的是,ConfigMap没有加密功能。
如何写一个ConfigMap对象
下面是一个ConfigMap的对象示例:
1 | apiVersion: v1 |
ConfigMap 处理每个API对象都有的apiVersion
、kind
和metadata
,但是没有spec
字段。 ConfigMap提供了两个字段data
和binaryData
来存储配置数据。data
: 存储配置数据。 Value中只能包含UTF-8数据,非UTF-8的数据必须使用binaryData
。binaryData
: 存储二进制数据。
除此之外,还有一个字段immutable
用来指定存储在ConfigMap中的数据是否可以被修改。
需要注意的是,同一个ConfigMap中,key是唯一的。在data
中已经使用的key,就不能被binaryData
使用,同理,在binaryData
已使用的key,也不能在data
中使用。
如何使用ConfigMap
Pod中的容器有四种方式来使用ConfigMap:
- 作为容器的entrypoint的命令行参数
- 容器的环境变量
- 只读的存储卷
- 在应用程序中通过调用Kubernetes API读取ConfigMap
下面是一个简单的示例, 该示例已上传的Github:
1 | apiVersion: v1 |
结果:
- 验证Env
- 验证只读文件