configMap 可以挂载文件到pod内部
注意点是通过subpath挂载不会删除原本路径下的文件,但是你用kubectl edit cm application-demo 不会自动更新到挂载路径
因此prometheus挂载的文件不用subpath,因为prometheus会监控cm更新实现动态软加载,这样更新会同步到挂在内部。
kubectl create cm application-cm --from-file config.txt
apiVersion: apps/v1
Kind: Deployment
metadata:
name: demo
namespace: default
spec:
selector:
matchLabels:
app: demo
template:
metadata:
labels:
app: demo
spec:
volumes:
- configMap:
name: application-cm
name: config
containers:
- name: nginx
image: nginx:alpine
imagePullPolicy: IFNotPresent
volumeMounts:
- mountPath: "/etc/application"
name: config
使用subpath挂载文件不会删除原路径的文件
apiVersion: apps/v1
Kind: Deployment
metadata:
name: demo
namespace: default
spec:
selector:
matchLabels:
app: demo
template:
metadata:
labels:
app: demo
spec:
volumes:
- name: config
configMap:
name: application-config
items:
- key: application.yaml
path: application
- key: supervisord.conf
path: supervisord
containers:
- name: nginx
image: nginx:alpine
imagePullPolicy: IFNotPresent
volumeMounts:
- mountPath: "/etc/application/application.yaml"
name: config
subPath: application
- mountPath: "/etc/application/supervisord.conf"
name: config
subPath: supervisord
subpath 更新configmap,挂载后不会自动更新,因此不怎么用subpath