我正在尝试创建一个舵图。在部署文件夹中,我有一个如下所示的 configmap 模板:
apiVersion: v1
kind: ConfigMap
metadata:
name: config
data:
app-properties: |
{{ .Values.app.appProperties }}
我的默认值是这样的:
app:
appProperties: |
line1
该代码似乎可以工作,但我需要在 app.appProperties 中添加更多行,当我在其中添加更多行时,如下所示:
app:
appProperties: |
line1
line2
line3
我得到:
upgrade.go:142: [debug] preparing upgrade for myhelm
Error: UPGRADE FAILED: YAML parse error on helm/templates/cms.yml: error converting YAML to JSON: yaml: line 11: could not find expected ':'
helm.go:84: [debug] error converting YAML to JSON: yaml: line 11: could not find expected ':'
YAML parse error on helm/templates/cms.yml
我期望的模板化定义应该是:
apiVersion: v1
kind: ConfigMap
metadata:
name: config
data:
app-properties: |
line1
line2
line3
正确的做法是什么?
这里的原因主要是因为缩进不正确,您可以通过运行带有
helm template
标志的 --debug
来验证。您可以仅将 nindent 4
与您的值一起使用,因为这似乎是正确的缩进级别,或者如果多行字符串具有一些您想要在配置映射中移动的模板,也可以使用 tpl
。
{{- /*
ConfigMap template
*/ -}}
apiVersion: v1
kind: ConfigMap
metadata:
name: config
data:
app-properties:
{{- .Values.app.appProperties | nindent 4 }}
---
## Values File
app:
appProperties: |
line1
line2
line3
结果
➜ $ helm template ./
---
# Source: my-local-functions/templates/multi-line-string.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: config
data:
app-properties:
line1
line2
line3
tpl
功能的示例{{- /*
In the templates directory somefile.yaml
*/ -}}
multiLineString:
{{- tpl .Values.multiLine . | nindent 2 }}
---
## Values Files
extraFruits: banana
multiLine: |
I am a line
{{ .Values.extraFruits }}
结果:
➜ $ helm template ./
---
# Source: my-local-functions/templates/somefile.yaml
multiLineString:
I am a line
banana
希望这有帮助。