ConfigMap是Kubernetes中用于存储非敏感配置数据的API对象,它将配置信息与容器镜像解耦,便于应用配置的修改,
txtenv单个变量注入方式 作用:将ConfigMap中的特定键值注入为Pod容器的环境变量 实现过程: 通过valueFrom.configMapKeyRef精确指定要引用的ConfigMap名称和键名 只提取ConfigMap中的特定配置项(如示例中的log_level) 生成独立的环境变量(可自定义变量名与键名不同) 典型场景:需要单独控制的关键配置参数 envFrom批量注入方式 作用:将整个ConfigMap的所有键值对自动转换为环境变量 实现过程: 通过configMapRef直接引用整个ConfigMap ConfigMap中的每个键都会成为容器的环境变量(键名作为变量名) 自动包含ConfigMap的所有数据变更 注意事项:需确保键名符合环境变量命名规范(大写字母+下划线) volume挂载方式 作用:将ConfigMap内容作为文件挂载到容器文件系统 实现过程: 在volumes段声明使用ConfigMap作为存储卷 通过volumeMounts将卷挂载到容器指定路径 每个键值对会生成独立文件(文件名=键名,内容=值) 核心优势: 支持配置文件的热更新(kubectl update后约1分钟同步) 保持原有文件格式(如nginx.conf的缩进和语法) 可通过subPath挂载单个文件而不影响目录 对比总结: 精细控制选env方式 批量导入用envFrom 配置文件场景必须用volume挂载 volume方式唯一支持配置热更新(需应用支持重载)
ymlapiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
# 键值对配置
log_level: "DEBUG"
max_connections: "100"
# 文件内容配置
nginx.conf: |
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
}
}
ymlapiVersion: v1
kind: Pod
metadata:
name: configmap-demo
spec:
containers:
- name: nginx-container
image: nginx:1.21
# 方式1:env单个变量注入
env:
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: app-config
key: log_level
# 方式2:envFrom批量注入
envFrom:
- configMapRef:
name: app-config
# 方式3:volume挂载配置文件
volumeMounts:
- name: config-volume
mountPath: /etc/nginx/conf.d # 此目录原有文件将被覆盖
volumes:
- name: config-volume
configMap:
name: app-config
items:
- key: nginx.conf
path: nginx.conf
本文作者:松轩(^U^)
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!