在 k8s 中,使用配置文件常见的就是创建一个 ConfigMap,然后直接挂载它
首先我们创建一个 configmap,填入一些信息
apiVersion: v1
kind: ConfigMap
metadata:
name: configname
data:
config.json: json-value
config.yaml: yaml-value
当我们想在 pod 中使用 ConfigMap
中的配置文件,则需要挂载进去,kubernetes 将 ConfigMap
中所有的内容以 data 中的 key 为文件名,value 为 文件内容,全部写入一个临时目录中,然后再以 volume 的形式挂载到容器中
apiVersion: apps/v1
kind: Deployment
metadata:
name: testvolume
spec:
replicas: 1
selector:
matchLabels:
app: mount-config
template:
metadata:
labels:
app: mount-config
spec:
containers:
- image: alpine:3.7
name: c0
volumeMounts:
- name: volumename
mountPath: /etc/config
volumes:
- configMap:
name: configname
name: volumename
挂载需要我们做两件事情
volumename
,然后引用 ConfigMap
volumeMounts
中使用已经声明的 volume,挂载到目录 /etc/config
下如上,你就可以在这个 container 的 /etc/config
下找到两个文件
上面的这种方式的挂载点在 /etc/config
它将 ConfigMap
中的所有 key 作为文件名,所以 value 作为文件内容都挂载进来,
ConfigMap
在挂载时,可以通过修改 volume 的定义,修改挂载时的文件名称或相对路径
...
volumes:
- configMap:
name: configname
items:
- key: config.json
path: rename.json
- key: config.yaml
path: yaml/config.yaml
name: volumename
挂载点还是 /etc/config
,有以下文件