Kubernetes 核心概念之4 ConfigMap 配置管理

Kubernetes configMap(配置文件存储)

与 Secret 类似,区别在于 ConfigMap 保存的是不需要加密配置信息。

应用场景:应用配置

创建测试配置文件

1.创建测试配置文件

1
2
3
4
# vim redis.properties
redis.host=127.0.0.1
redis.port=6379
redis.password=123456

2.通过命令创建引用配置文件

1
kubectl create configmap redis-config --from-file=./redis.properties

3.查看创建的配置文件

1
2
3
4
# kubectl get cm

NAME DATA AGE
redis-config 1 8s

查看详细信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# kubectl describe cm redis-config

Name: redis-config
Namespace: default
Labels: <none>
Annotations: <none>

Data
====
redis.properties:
----
redis.host=127.0.0.1
redis.port=6379
redis.password=123456

Events: <none>

通过 volume 形式挂载

1、创建yaml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# vim cm.yaml

apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: busybox
image: busybox
command: [ "/bin/sh","-c","cat /etc/config/redis.properties" ]
volumeMounts:
- name: config-volume
mountPath: /etc/config
volumes:
- name: config-volume
# 指定保存的配置文件
configMap:
# 配置文件名称
name: redis-config
restartPolicy: Never

2、创建容器

1
kubectl create -f cm.yaml

3、查看结果

1
2
3
4
# kubectl logs mypod
redis.host=127.0.0.1
redis.port=6379
redis.password=123456

通过变量名方式形式挂载

1、创建yaml文件

1
2
3
4
5
6
7
8
9
10
# vim myconfig.yaml

apiVersion: v1
kind: Config
Mapmetadata: # 指定命名空间
name: myconfig
namespace: default
data: # 指定level type
special.level: info # 指定变量 value 则是配置文件的配置
special.type: hello

2、创建容器

1
kubectl create -f myconfig.yaml

3、查看创建

1
2
3
4
5
# kubectl get cm

NAME DATA AGE
myconfig 2 23s
redis-config 1 11m

4、创建 pod yaml

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
# vim config-var.yaml

apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: busybox
image: busybox
command: [ "/bin/sh", "-c", "echo $(LEVEL) $(TYPE)" ]
env:
- name: LEVEL
valueFrom:
# 通过key加载配置文件
configMapKeyRef:
# 使用的 key
name: myconfig
key: special.level
- name: TYPE
valueFrom:
configMapKeyRef:
# 使用的 type
name: myconfig
key: special.type
restartPolicy: Never

5、查看验证

1
2
3
# kubectl logs mypod

info hello

Kubernetes 核心概念之4 ConfigMap 配置管理
https://flepeng.github.io/042-云原生-02-kubernetes-31-核心概念-Kubernetes-核心概念之4-ConfigMap-配置管理/
作者
Lepeng
发布于
2023年3月1日
许可协议