- ConfigMap 介绍
在Kubernetes 1.2中新添加了功能ConfigMap,主要功能是为了解决应用程序会从配置文件、环境变量中获取配置信息。
注意: ConfigMap不是属性配置文件的代替品,ConfigMap只是作为多个properties文件的引用。
场景: 配置文件
- ConfigMap 项目演示(配置文件)
configmap主要还是方便处理非敏感的数据,比如注册中心地址、数据库地址、nginx地址等。像密码之类需要加密的还是需要使用secrets来进行管理
下方yaml文件中data一栏包括了配置数据,ConfigMap可以保存单个属性,也可以用来保存一个配置文件。配置数据可以通过很多种方式在Pods里被引用,ConfigMap可以用来:
设置环境变量的值
在容器里设置命令行参数
在数据卷里面创建config文件
用户和系统两者都可以在ConfigMap里存储
2.1 创建配置文件
cat > redis.properties <<-EOF
redis.host=127.0.0.1
redis.port=6379
redis.password=123456
EOF
2.2 创建configmap
$ kubectl create configmap redis-config --from-file=redis.properties
#查看
[root@k8s-master01 k8s]# kubectl get cm
NAME DATA AGE
redis-config 1 30s
[root@k8s-master01 k8s]# 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>
2.3 以Volume挂载到Pod容器中
apiVersoin: v1
kind: Pod
metadata:
name: configmap-test
spec:
containers:
- name: busybox
image: busbox
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
创建并验证
[root@k8s-master01 k8s]# kubectl get all
NAME READY STATUS RESTARTS AGE
pod/configmap-test 0/1 Completed 0 4m36s
[root@k8s-master01 k8s]# kubectl logs configmap-test
redis.host=127.0.0.1
redis.port=6379
redis.password=123456
- ConfigMap 项目演示(变量)
3.1 创建configmap
apiVersion: v1
kind: ConfigMap
metadata:
name: myconfig
data:
db.host: localhost
db.port: "3306"
创建并查看
kubectl apply -f **.yaml
[root@k8s-master01 k8s]# kubectl get configmaps
NAME DATA AGE
myconfig 2 39s
3.2 创建Pod进行引用
apiVersion: v1
kind: Pod
metadata:
name: configmap-env
spec:
containers:
- name: busybox-configmap-env
image: busybox
command: [ "/bin/sh","-c","echo $(db.host) $(db.port)" ]
env:
- name: db.host
valueFrom:
configMapKeyRef:
name: myconfig
key: db.host
- name: db.port
valueFrom:
configMapKeyRef:
name: myconfig
key: db.port
restartPolicy: Never
创建并验证
$ kubectl apply -f **.yaml
[root@k8s-master01 k8s]# kubectl logs configmap-env
localhost 3306