Kubernetes v1.2的版本提供统一的集群配置管理方案–ConfigMap。
使用场景:
ConfigMap以一个或多个key:value的形式保存在kubernetes系统中供应用使用,既可以表示一个变量的值(例如:apploglevel=info),也可以表示完整配置文件的内容(例如:server.xml=<?xml…>…)。
可以通过yaml配置文件或者使用kubectl create configmap命令的方式创建ConfigMap。
cm-appvars.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: cm-appvars
data:
apploglevel: info
appdatadir: /var/data
常用命令
kubectl create -f cm-appvars.yaml
kubectl get configmap
kubectl describe configmap cm-appvars
kubectl get configmap cm-appvars -o yaml
通过kubectl create configmap创建,使用参数–from-file或–from-literal指定内容,可以在一行中指定多个参数。
1)通过–from-file参数从文件中进行创建,可以指定key的名称,也可以在一个命令行中创建包含多个key的ConfigMap。
kubectl create configmap NAME –from-file=[key=]source –from-file=[key=]source
2)通过–from-file参数从目录中进行创建,该目录下的每个配置文件名被设置为key,文件内容被设置为value。
kubectl create configmap NAME –from-file=config-files-dir
3)通过–from-literal从文本中进行创建,直接将指定的key=value创建为ConfigMap的内容。
kubectl create configmap NAME –from-literal=key1=value1 –from-literal=key2=value2
容器应用对ConfigMap的使用有两种方法:
ConfigMap的yaml文件:cm-appvars.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: cm-appvars
data:
apploglevel: info
appdatadir: /var/data
Pod的yaml文件:cm-test-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: cm-test-pod
spec:
containers:
- name: cm-test
image: busybox
command: ["/bin/sh","-c","env|grep APP"]
env:
- name: APPLOGLEVEL
valueFrom:
configMapKeyRef:
name: cm-appvars
key: apploglevel
- name: APPDATADIR
valueFrom:
configMapKeyRef:
name: cm-appvars
key: appdatadir
创建命令:
kubectl create -f cm-test-pod.yaml
kubectl get pods –show-all
kubectl logs cm-test-pod
参考文章