ConfigMaps 允许配置项目与镜像内容分离,以保持容器化应用程序的可移植性。本页提供了一系列使用示例,演示如何如何使用存储在ConfigMap中的数据创建ConfigMap和配置Pod。
使用介绍流程
- 创建ConfigMap
- 使用文件夹/文件/键值的形式创建ConfigMap
- 使用ConfigMap定义环境变量
- 使用单个ConfigMap中的数据定义环境变量
- 使用多个ConfigMap中的数据定义环境变量
- 将ConfigMap中的所有键值对配置为环境变量
- 使用ConfigMap定义数据卷
- 使用ConfigMap
- 将ConfigMap中数据挂载到容器特定路径下
创建ConfigMap
- 从目录创建
# 将要使用的目录下的文件
[root@node /opt/configmap]ls
game.properties ui.properties
# 根据文件夹创建ConfigMap
[root@node /opt/configmap] kubectl create configmap game-config --from-file=/opt/configmap/
# 查看ConfigMap
[root@node /opt/configmap] kubectl describe configmaps game-config
Name: game-config
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
game.properties: 158 bytes
ui.properties: 83 bytes
- 从文件创建
# 将要使用的文件
[root@node /opt/configmap]ls
game.properties ui.properties
# 根据文件创建ConfigMap
[root@node /opt/configmap] kubectl create configmap game-config2 --from-file=/opt/configmap/game.properties --from-file=/opt/configmap/ui.properties
# 查看ConfigMap
[root@node /opt/configmap] kubectl describe configmaps game-config2
Name: game-config
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
game.properties: 158 bytes
ui.properties: 83 bytes
- 使用—from-env-file选项以键值的形式从一个env文件创建ConfigMap
"""
env文件中的每一行必须为VAR = VAL格式。
若引号没有特殊处理(即它们将成为ConfigMap值的一部分)。
**注意**:当多次传递--from-env-file来从多个数据源创建ConfigMap时,仅使用最后一个env文件:
"""
# 查看env文件示例
[root@node /opt/configmap]cat game-env-file.properties
enemies=aliens
lives=3
allowed="true"
# 根据env文件创建ConfigMap
[root@node /opt/configmap] kubectl create configmap game-config-env-file \
--from-env-file=/opt/configmap/game-env-file.properties
[root@node /opt/configmap] kubectl get configmap game-config-env-file -o yaml
apiVersion: v1
kind: ConfigMap
metadata:
creationTimestamp: 2017-12-27T18:36:28Z
name: game-config-env-file
namespace: default
resourceVersion: "809965"
uid: d9d1ca5b-eb34-11e7-887b-42010a8002b8
data:
allowed: '"true"'
enemies: aliens
lives: "3"