Kubernetes configMap(配置文件存储)
与 Secret 类似,区别在于 ConfigMap 保存的是不需要加密配置信息。
应用场景:应用配置
创建测试配置文件
1.创建测试配置文件
1 2 3 4
| redis.host=127.0.0.1 redis.port=6379 redis.password=123456
|
2.通过命令创建引用配置文件
1
| kubectl create configmap redis-config
|
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
| redis.host=127.0.0.1 redis.port=6379 redis.password=123456
|
通过变量名方式形式挂载
1、创建yaml文件
1 2 3 4 5 6 7 8 9 10
|
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
|
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
|