kubernetes ConfigMap只挂载一个文件
1. 概述
挂载一整个目录的方式详见<<kubernetes ConfigMap的使用>>
这里特别说明如何挂载目录和挂载一个文件
详见官方文档:https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-pod-configmap/
2. 环境
2.1. 配置文件目录
/var/app/mage-go-device/conf/有两个文件:
一个const.yaml不可变更
一个setting.yaml可变更
2.1. ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
name: dev
data:
setting.yaml: |
ServiceAdvHost: 127.0.0.1
ServiceAdvEnable: true
Kafka:
Enable: false
URL: 10.0.22.120:9092
UserName: admin
Password: u01202302011819
DeviceTopic: "device"
Group: "alpha"
只对setting.yaml的配置
3. 挂载configmap的整个目录
volumeMounts:
- name: config-volume
mountPath: /var/app/mage-go-device/conf/
volumes:
- name: config-volume
configMap:
name: dev
采用这种方式挂载,会挂载/var/app/mage-go-device/conf的整个目录都用configMap为dev的配置项替换
但是dev的配置项没有配置const.yaml,这样就导致pod里面无法访问const.yaml
这时候就需要只挂载一个文件setting.yaml
4. 挂载configmap的部分key到一个文件
volumeMounts:
- mountPath: /var/app/mage-go-device/conf/setting.yaml
name: config-volume
subPath: setting.yaml
volumes:
- name: config-volume
configMap:
name: dev
mountPath设置到具体的文件路径/var/app/mage-go-device/conf/setting.yaml
同时指定config-volume使用的subPath是:setting.yaml,这样就可以挂载某个文件了