kubernetes ConfigMap只挂载一个文件

发布时间 2023-04-06 13:57:30作者: 若-飞

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,这样就可以挂载某个文件了