kubernetes ConfigMap 使用说明
环境信息
- Kubernetes 1.24
ConfigMap
是 Kubernetes 用来向应用 Pod 中注入配置数据的方法。[1]
使用 ConfigMap 数据定义容器环境变量
使用单个 ConfigMap 中的数据定义容器环境变量
- 在
ConfigMap
中将环境变量定义为键值对:kubectl create configmap special-config --from-literal=special.how=very
- 将 ConfigMap 中定义的 special.how 赋值给 Pod 规约中的 SPECIAL_LEVEL_KEY 环境变量。 现在,Pod 的输出包含环境变量
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: registry.k8s.io/busybox
command: [ "/bin/sh", "-c", "env" ]
env:
# 定义环境变量
- name: SPECIAL_LEVEL_KEY
valueFrom:
configMapKeyRef:
# ConfigMap 包含你要赋给 SPECIAL_LEVEL_KEY 的值
name: special-config
# 指定与取值相关的键名
key: special.how
restartPolicy: NeverSPECIAL_LEVEL_KEY=very
。
使用来自多个 ConfigMap 的数据定义容器环境变量
创建 ConfigMap
[2]
apiVersion: v1 |
在 Pod 规约中定义环境变量。
apiVersion: v1 |
将 ConfigMap 中的所有键值对配置为容器环境变量
创建一个包含多个键值对的 ConfigMap。
apiVersion: v1 |
使用 envFrom
将所有 ConfigMap
的数据定义为容器环境变量,ConfigMap
中的键成为 Pod 中的环境变量名称。
apiVersion: v1 |
将 ConfigMap 内容挂载到容器中的文件
下面是一个将 ConfigMap 以卷的形式进行挂载的 Pod 示例: [3]
apiVersion: v1 |
挂载之后,configMap
中的每个键会变成 spec.containers[].volumeMounts[].mountPath
下面的一个文件名。
将 configMap
暴露为卷可以达到配置热更新的效果,当 configMap
更新后,卷中引用它的所有文件也会相应更新,进程发现文件被改变后进行重载(需要进程有此功能),无需重新创建 Pod 或者重启容器。