k8 - configmap
kubesphere 中称作 “配置字典”
概述
简而言之,configmap 的功能,就是将配置文件(参数)与容器进行解耦。
以部署 mysql 为例,部署的时候,需要一个 my.cnf 配置文件。
要是每次修改配置参数,都要进特定的容器去操作,这多少有点不合适。
这时候,就可以将 my.cnf 配置成 configmap,让 k8s 统一管理我们的配置文件。
优势显而易见:
- 一次编写,处处使用,一份配置能给很多个容器用;
- 方便管理,因为被平台统一托管了。
声明一个 configmap
kubectl apply -f configmap.yaml
kind: ConfigMap
apiVersion: v1
metadata:
name: mysql-config
namespace: default
data:
my.cnf:|
[mysqlId]
server_id=1
## 省略后续参数………………
将 configmap 作为挂载使用
引用名称叫做 mysql-config 的 configmap,选取键值为 my.cnf 的数值,将内容写入到 /etc/my.cnf 文件中。
挂载 configmap 方式一
spec:
containers:
- name: demo
image: mysql
volumeMounts:
- name: mysql-volume
mountPath: /etc/my.cnf
subPath: my.cnf
volumes:
- name: mysql-volume
configMap:
name: mysql-config
挂载 configmap 方式二
# 部署 mysql 要用方式一,这里仅作为案例。
# 这种方式,挂载的是 /etc 一整个目录,会产生文件覆盖的问题,最后只保留 my.cnf 这一个文件,其它文件则会被清除。
spec:
containers:
- name: demo
image: mysql
volumeMounts:
- name: mysql-volume
mountPath: /etc # 最终文件存放位置:/etc/my.cnf
volumes:
- name: mysql-volume
configMap:
name: mysql-config
items:
- key: my.cnf # 引用 configmap 的配置信息
path: my.cnf # 将配置信息写入文件,所采用的文件名
将 configmap 作为环境变量
引用名称叫做 mysql-config 的 configmap,选取键值为 mysql-password 的数值,作为容器的环境变量,环境变量的名字叫做 MYSQL_PASSWORD。
spec:
containers:
- name: demo
image: mysql
env:
- name: MYSQL_PASSWORD
valueFrom:
configMapKeyRef:
name: mysql-config
key: mysql-password
如果 configmap 中配置了大量参数,用下面这种方式,一次性将所有参数作为环境变量。
kind: ConfigMap
apiVersion: v1
metadata:
name: mysql-config
data:
MYSQL_PASSWORD: "123456"
MYSQL_DATABASE: demo
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: test-mysql
spec:
selector:
matchLabels:
app: test-mysql
template:
metadata:
labels:
app: test-mysql
spec:
containers:
- name: mysql
image: mysql:5.7
envFrom:
- configMapRef:
name: mysql-config
疯狂的妞妞 :每一天,做什么都好,不要什么都不做!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY