Helm 的 v3 示例不显示多行属性。获取 YAML 到 JSON 解析错误
Helm's v3 Example Doesn't Show Multi-line Properties. Get YAML to JSON parse error
在Helm的v3文档中:Accessing Files Inside Templates,作者给出了3个属性(toml)文件的例子;其中每个文件只有一对 key/value。
configmap.yaml 看起来像这样。为了简单起见,我只添加了一个 config.toml。
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-config
data:
{{- $files := .Files }}
{{- range tuple "config.toml" }}
{{ . }}: |-
{{ $files.Get . }}
{{- end }}
这工作正常,直到我将 second 行添加到 config.toml 文件。
config.toml
replicaCount=1
foo=bar
然后我得到一个错误:INSTALLATION FAILED: YAML parse error on deploy/templates/configmap.yaml: error converting YAML to JSON: yaml: line 9: could not find expected ':'
如有任何想法,我们将不胜感激。
谢谢
Helm 将读取该文件,但它(无论好坏)是一个 text 模板引擎。它不了解您正在尝试编写 YAML 文件,因此它不会帮助您。这实际上就是为什么您会在野外看到这么多带有 {{ .thing | indent 8 }}
或 {{ .otherThing | toYaml }}
的模板的原因——因为 you need to help Helm 知道它在什么上下文中发出 text
因此,在您的特定情况下,您需要值为 4 的 indent
filter,因为您当前的模板有两个空格用于键缩进级别,还有两个空格用于值块标量
data:
{{- $files := .Files }}
{{- range tuple "config.toml" }}
{{ . }}: |-
{{ $files.Get . | indent 4 }}
{{/* notice this ^^^ template expression is flush left,
because the 'indent' is handling whitespace, not the golang template itself */}}
{{- end }}
此外,虽然这是对您问题的具体答案,但不要忽视 .AsConfig
section on that page 这似乎更可能是您真正想要发生的事情,并且需要较少的 indent
数学
在Helm的v3文档中:Accessing Files Inside Templates,作者给出了3个属性(toml)文件的例子;其中每个文件只有一对 key/value。
configmap.yaml 看起来像这样。为了简单起见,我只添加了一个 config.toml。
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-config
data:
{{- $files := .Files }}
{{- range tuple "config.toml" }}
{{ . }}: |-
{{ $files.Get . }}
{{- end }}
这工作正常,直到我将 second 行添加到 config.toml 文件。
config.toml
replicaCount=1
foo=bar
然后我得到一个错误:INSTALLATION FAILED: YAML parse error on deploy/templates/configmap.yaml: error converting YAML to JSON: yaml: line 9: could not find expected ':'
如有任何想法,我们将不胜感激。 谢谢
Helm 将读取该文件,但它(无论好坏)是一个 text 模板引擎。它不了解您正在尝试编写 YAML 文件,因此它不会帮助您。这实际上就是为什么您会在野外看到这么多带有 {{ .thing | indent 8 }}
或 {{ .otherThing | toYaml }}
的模板的原因——因为 you need to help Helm 知道它在什么上下文中发出 text
因此,在您的特定情况下,您需要值为 4 的 indent
filter,因为您当前的模板有两个空格用于键缩进级别,还有两个空格用于值块标量
data:
{{- $files := .Files }}
{{- range tuple "config.toml" }}
{{ . }}: |-
{{ $files.Get . | indent 4 }}
{{/* notice this ^^^ template expression is flush left,
because the 'indent' is handling whitespace, not the golang template itself */}}
{{- end }}
此外,虽然这是对您问题的具体答案,但不要忽视 .AsConfig
section on that page 这似乎更可能是您真正想要发生的事情,并且需要较少的 indent
数学