k8 - configmap

kubesphere 中称作 “配置字典”

概述

简而言之,configmap 的功能,就是将配置文件(参数)与容器进行解耦。

以部署 mysql 为例,部署的时候,需要一个 my.cnf 配置文件。
要是每次修改配置参数,都要进特定的容器去操作,这多少有点不合适。
这时候,就可以将 my.cnf 配置成 configmap,让 k8s 统一管理我们的配置文件。

优势显而易见:

  1. 一次编写,处处使用,一份配置能给很多个容器用;
  2. 方便管理,因为被平台统一托管了。

声明一个 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

posted on   疯狂的妞妞  阅读(364)  评论(0编辑  收藏  举报

(评论功能已被禁用)
编辑推荐:
· 开发者必知的日志记录最佳实践
· 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
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示