ConfigMap 是 Kubernetes 中用来存储配置数据的对象。它可以被用来保存单个属性,也可以用来保存整个配置文件或 JSON 二进制大对象。
ConfigMap 有以下主要用途:
- 设置环境变量:可以将 ConfigMap 中的键值对设置为 Pod 中的环境变量。
- 配置文件:可以将 ConfigMap 用作卷中的配置文件。
- 设置命令行参数:可以在 Pod 的命令行中使用 ConfigMap。
例如,我们可以创建一个 ConfigMap 来配置 Nginx 的默认首页:
yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config
data:
index.html: |
<h1>Hello from ConfigMap!</h1>
然后在 Nginx Pod 中使用这个 ConfigMap:
yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: config-volume
mountPath: /usr/share/nginx/html
volumes:
- name: config-volume
configMap:
name: nginx-config
这里我们将 ConfigMap 挂载为 Pod 的卷,然后将 Nginx 容器的默认首页目录挂载到这个卷上。这样 Nginx 就会使用 ConfigMap 中的 index.html 作为默认页了。
我们也可以将 ConfigMap 用作环境变量:
yaml
apiVersion: v1
kind: Pod
metadata:
name: env-example
spec:
containers:
- name: env-example
image: busybox
command: [ "sh", "-c", "echo $(SPECIAL_LEVEL_KEY) $(SPECIAL_TYPE_KEY)" ]
env:
- name: SPECIAL_LEVEL_KEY
valueFrom:
configMapKeyRef:
name: special-config
key: SPECIAL_LEVEL
- name: SPECIAL_TYPE_KEY
valueFrom:
configMapKeyRef:
name: special-config
key: SPECIAL_TYPE
这里我们从名为 special-config 的 ConfigMap 中获取 SPECIAL_LEVEL 和 SPECIAL_TYPE 这两个键,并设置为 Pod 中的环境变量。
所以总结来说,ConfigMap 有以下主要用途:
- 设置环境变量:可以将 ConfigMap 中的键值对设置为 Pod 环境变量。
- 配置文件:可以将 ConfigMap 作为卷中的配置文件使用。
- 设置命令行参数:可以在 Pod 的命令行中使用 ConfigMap。