configmap与secret类似,只是configmap用来处理不包含敏感信息的数据,用于Pod自定义配置。
1.创建Configmap
Configmap也有四种方式创建:
- 通过--from-literal
kubectl create configmap myconfigmap1 --from-literal=config1=123 --from-literal=config2=456
一个--from-literal对应一个条目,查看如下:
[root@ceph1 kube-dashboard]# kubectl describe configmap myconfigmap1
Name: myconfigmap1
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
config1:
----
123
config2:
----
456
Events: <none>
- 通过--from-file
kubectl create configmap myconfigmap2 --from-file=configmap1 --from-file=configmap2
- 通过--from-env-file
kubectl create configmap myconfigmap3 --from-env-file=configmap-env.txt
- 通过yaml配置文件
kind: ConfigMap
metadata:
name: myconfigmap4
data:
config1: aaa
config2: bbb
kubectl create -f myconfigmap4.yaml
2. 使用ConfigMap
ConfigMap也有两种方式使用:环境变量和Volume。
- Volume方式
apiVersion: v1
kind: Pod
metadata:
name: configmap-volume
spec:
containers:
- name: configmap-volume
image: busybox
args:
- /bin/sh
- -c
- sleep 10; touch /tmp/test; sleep 30000
volumeMounts:
- name: configmap
mountPath: /etc/configmap
readOnly: true
volumes:
- name: configmap
configMap:
name: myconfigmap4
- 环境变量的方式
apiVersion: v1
kind: Pod
metadata:
name: configmap-env
spec:
containers:
- name: configmap-env
image: busybox
args:
- /bin/sh
- -c
- sleep 10; touch /etc/configmap; sleep 30000
env:
- name: CONFIG1
valueFrom:
configMapKeyRef:
name: myconfigmap4
key: config1
name: CONFIG2
valueFrom:
configMapKeyRef:
name: myconfigmap4
key: config2
普遍情况下,配置信息都是以文件形式存在,所以在创建configmap时候采用--from-file或者yaml文件比较多,使用configmap则是volume的方式居多。