【问题标题】:ConfigMap with multiple destination folders具有多个目标文件夹的 ConfigMap
【发布时间】:2021-08-24 10:03:49
【问题描述】:

我的 configMap 文件:

kind: ConfigMap 
apiVersion: v1 
metadata:
  name: config
data:
  config.xml: |
{{ .Files.Get "configuration/config.tpl" | indent 4 }}
  control1.xml: |
{{ .Files.Get "controlsets/control1.tpl" | indent 4 }}
  control2.xml: |
{{ .Files.Get "controlsets/control2.tpl" | indent 4 }}

我如何实现 config.xml 将被挂载到 configuration 文件夹和两个控制文件到 controlsets 文件夹?谢谢你的回答。

编辑: 我解决了问题,但我认为它可以更动态地完成。

configMap 文件保持不变。

部署文件的volumeMounts部分:

volumeMounts:
    - name: config-volume
      mountPath: /app/Configuration/config.xml
      subPath: config.xml
    - name: config-volume
      mountPath: /app/Controlsets/control1.xml
      subPath: control1.xml
    - name: config-volume
      mountPath: /app/Controlsets/control2.xml
      subPath: control2.xml

如何实现 controlsets 文件夹中的所有文件进入 /app/Controlsets 文件夹和 configuration 中的所有文件都使用脚本转到 /app/Configuration 文件夹?现在我必须为我添加的每个配置文件更改 yaml 文件。如果只是写文件夹之间的关系,其余的由 helm 完成,那就太好了。

【问题讨论】:

    标签: kubernetes-helm helmfile helm3


    【解决方案1】:

    可以通过遍历文件夹来解决。

    config.yaml

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: {{ $.Values.test.name }}
      labels:
        {{- range $k, $v := $.Values.test.labels}}
        {{ $k }}: {{ $v }}
        {{- end }}
    data:
      {{- range $path, $_ :=  .Files.Glob  "configuration/**" }}
      {{ (base $path) | trimSuffix ".tpl" }}.xml: |-
        {{ $.Files.Get $path | nindent 4 }}
      {{- end }}
    

    deployemnt.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: {{ include "test.fullname" . }}
    spec:
      template:
        spec:
          containers:
            - name: {{ .Chart.Name }}
              image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
              imagePullPolicy: {{ .Values.image.pullPolicy }}
              volumeMounts:
                - mountPath: config-volume
                  name: /app/Configuration
          volumes:
            - name: config-volume
              configMap:
                name: {{ $.Values.test.name }}
    
    

    【讨论】:

    • 你能说得更具体一点吗?我是掌舵图表的新手。我确实找到了解决方案(看我的编辑),但它对每个文件都是硬编码的。如果我能把这个逻辑写在脚本里就好了。
    • 可以直接挂载目录(看我的编辑)
    猜你喜欢
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 2014-12-03
    相关资源
    最近更新 更多