我刚刚创建了一个新的 Helm 图表,但当我运行
helm upgrade -i
我得到以下错误:
Error: UPGRADE FAILED: YAML parse error on app/templates/configmap.i18n.yaml: error converting YAML to JSON: yaml: line 19: could not find expected ':'
这是我的电子Map. i18n.yaml:
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "app.name" . }}-i18n-configuration
labels:
{{- include "app.labels" . | nindent 4 }}
data:
{{- range $lang, $messages := .Values.application.i18n }}
{{ $lang }}: |
{{ $messages }}
{{- end }}
并且i18n在值.yaml中给出如下:
i18n:
en: |
site.name="T"
site.name.Server="Tether"
site.name.Test="Test"
fa: |
site.name="ت"
site.name.Server="تتر"
site.name.Test="تست"
如果值文件如下所示,则一切正常。
i18n:
en: |
site.name="T"
fa: |
site.name="ت"
我想通过helm创建messages.properties文件。如果我只输入一条消息,则一切正常,但如果我添加更多消息,则会出现错误。
2条答案
按热度按时间fgw7neuy1#
值中的多行字符串正在摆脱缩进。尝试使用您显示的值运行
helm template --debug
;我希望你能看到类似这样的东西第一行之后的行完全不缩进。
在Helm值YAML文件和输出模板中都以
|
结尾的行引入了一个YAML * 块标量 。下面的行被认为是一个字符串, 所有前导空格都被去掉 *。当你写出来的时候,你需要重新插入前导空格。indent
模板函数将在多行字符串中的每一行的前面插入空格,但您需要确保该行本身没有缩进,以免出现双重缩进。在
metadata:
块中,使用nindent
进行了类似的调用。它使用模板空白填充指示器{{-
来删除之前的所有空白,包括行首的前导空白和换行符;然后nindent
以换行符开始结果字符串。这将使您在模板中正确地删除该行,尽管实际的空白将丢失。xfb7svmp2#
经过大量的搜索,我找到了该做什么。我修改了我的map.yaml如下: