中文文档:https://kubernetes.io/zh/docs/tasks/configure-pod-container/configure-pod-configmap/
与Secret类似,区别在于ConfigMap保存的是不需要加密配置信息。
可以使用 kubectl create configmap 命令基于 目录、文件 或者字面值来创建 ConfigMap。
kubectl create configmap <map-name> <data-source>
可以使用kubectl describe 或者 kubectl get 获取有关 ConfigMap 的信息。
应用场景:应用配置
一、创建测试配置文件(基于文件创建configmap)
1、创建测试配置文件
vim redis.properties
redis.host=127.0.0.1
redis.port=6379
redis.password=123456
2、通过命令创建引用配置文件
kubectl create configmap redis-config --from-file=./redis.properties
3、查看创建的配置文件
kubectl get cm
NAME DATA AGE
redis-config 1 8s
4、查看详细信息
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文件
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、创建容器
kubectl create -f cm.yaml
3、查看结果
kubectl logs mypod
redis.host=127.0.0.1
redis.port=6379
redis.password=123456
三、通过变量名方式
1、创建yaml文件
vim myconfig.yaml
apiVersion: v1
kind: ConfigMap
metadata:
指定命名空间
name: myconfig
namespace: default
# 指定level type
data:
指定变量 value则是配置文件的配置
special.level: info
special.type: hello
2、创建容器
kubectl create -f myconfig.yaml
3、查看创建
kubectl get cm
NAME DATA AGE
myconfig 2 23s
redis-config 1 11m
4、创建pod yaml
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、查看验证
kubectl logs mypod
info hello
四、基于目录创建configmap
# 创建本地目录
mkdir -p configure-pod-container/configmap/
# 将实例文件下载到 configure-pod-container/configmap/ 目录
wget https://kubernetes.io/examples/configmap/game.properties -O configure-pod-container/configmap/game.properties
wget https://kubernetes.io/examples/configmap/ui.properties -O configure-pod-container/configmap/ui.properties
# 创建 configmap
kubectl create configmap game-config --from-file=configure-pod-container/configmap/
# 查看configmap信息
kubectl describe configmaps game-config
# 以yaml文件方式查看configmap信息
kubectl get configmaps game-config -o yaml
K8S1.19版本之后可以设置Configmap和Secret配置不可变只需要在最后加参数:(immutable: true)即可实现。