Configmap基础
作为环境变量
apiVersion: v1
kind: Pod
metadata:
name: pod-env-config-demo
spec:
containers:
- name: demo-container
image: busybox
command: ["/bin/sh", "-c", "env | grep APP_ && sleep 3600"] # 打印环境变量并休眠
env:
# 单个环境变量:直接引用 ConfigMap 的某个键值对
- name: APP_ENV # 容器内的环境变量名
valueFrom:
configMapKeyRef:
name: app-yaml-config # 引用的 ConfigMap 名称
key: app.env # 引用的 ConfigMap 中的键
- name: APP_VERSION # 另一个环境变量
valueFrom:
configMapKeyRef:
name: app-yaml-config
key: app.version
# (可选)批量注入环境变量:将 ConfigMap 所有键值对作为环境变量注入
envFrom:
- configMapRef:
name: app-simple-config # 引用的 ConfigMap 名称(方式 1 创建的)
restartPolicy: Never作为命令行参数(通过环境变量中转)
apiVersion: v1
kind: Pod
metadata:
name: pod-command-config-demo
spec:
containers:
- name: demo-container
image: busybox
# 命令行参数引用环境变量(环境变量来自 ConfigMap)
command: ["/bin/sh", "-c", "echo '当前环境:$(APP_ENV),版本:$(APP_VERSION)' && sleep 3600"]
env:
- name: APP_ENV
valueFrom:
configMapKeyRef:
name: app-yaml-config
key: app.env
- name: APP_VERSION
valueFrom:
configMapKeyRef:
name: app-yaml-config
key: app.version
restartPolicy: Never挂载为目录(支持热更新)
apiVersion: v1
kind: Pod
metadata:
name: pod-volume-dir-config-demo
spec:
containers:
- name: demo-container
image: busybox
command: ["/bin/sh", "-c", "ls /app/config && cat /app/config/app.conf && sleep 3600"]
volumeMounts:
- name: config-volume # 与 volumes 中定义的卷名对应
mountPath: /app/config # 容器内的挂载目录(该目录下原有文件会被覆盖)
volumes:
- name: config-volume # 定义卷名称
configMap:
name: app-yaml-config # 引用的 ConfigMap 名称
restartPolicy: Never挂载为文件
apiVersion: v1
kind: Pod
metadata:
name: pod-volume-file-config-demo
spec:
containers:
- name: demo-container
image: busybox
command: ["/bin/sh", "-c", "cat /app/db.properties && sleep 3600"]
volumeMounts:
- name: config-volume # 与 volumes 中定义的卷名对应
mountPath: /app/db.properties # 容器内的单个文件路径
subPath: db.properties # 引用 ConfigMap 中的某个键(对应生成的文件名)
volumes:
- name: config-volume
configMap:
name: app-yaml-config # 引用的 ConfigMap 名称
items: # 可选:筛选需要挂载的键(不写则挂载所有)
- key: db.properties
path: db.properties # 卷内的文件路径(与 subPath 对应)
restartPolicy: Never