在 Helm 帮助图表中读取文件

Read file in Helm helper chart

我正在尝试创建一个辅助图表,将文件内容提供给其他图表。基本上,由于我的所有应用程序都具有几乎相同的 logging.xml 配置,所以我想在一个地方定义它并在应用程序图表之间共享。

到目前为止,我已经成功创建了一个模板:

{{- define "helpers.logging.xml" -}}
    logback.xml: |-
        {{ .Files.Get "resources/logback.xml" }}
{{- end }}

辅助图表中的文件结构如下所示:

helpers
  |--templates
     |--_helpers.tpl
  |-resources
     |--logback.xml
  Chart.yaml

在主图表中,我尝试传递模板的结果。但只有当我在应用程序图表本身中有一个 resouses/logging.xml 文件时它才有效。

apiVersion: v1
kind: ConfigMap
metadata:
  name: logging.{{ .Release.Name }}
  namespace: {{ .Release.Namespace }}
data:
  {{ include "helpers.logging.xml" . }}

有人可以告诉我哪里出了问题吗?用 Helm 真的可以做这样的事情吗?

所以最后我找到了适合我需要的解决方案。我没有从资源文件中获取资源,而是使用这样的单个模板创建了一个额外的帮助程序:

{{- define "templates.logback.xml" -}}
    logback.xml: |-
        <?xml version="1.0" encoding="UTF-8"?>
        <configuration>
          <!-- default configuration goes here -->
          <!--  ...  -->

          <!-- include custom config -->
          <include file="logback-custom.xml"/>
        </configuration>
{{- end }}

在图表中,我有一个配置如下的 configMap:

apiVersion: v1
kind: ConfigMap
metadata:
  name: logging.{{ .Release.Name }}
  namespace: {{ .Release.Namespace }}
data:
  {{ include "templates.logback.xml" . }}
  logback-custom.xml: |
    <included>
      <!-- custom config -->
    </included>