我尝试从值填充我的部署并收到错误:
YAML parse error on helm-general/templates/deployment.yaml: error converting YAML to JSON: yaml: line 46: mapping values are not allowed in this context
我的价值观.yaml
env:
LIMESURVEY_DB_HOST:
value: "host.com"
LIMESURVEY_DB_PASSWORD:
valueFrom:
secretKeyRef:
name: limesurvey-pass
key: pass
部署.yaml
env:
{{- range $k, $v := .Values.env }}
- name: {{ $k }}
{{- $v | toYaml | indent 7 }}
{{- end }}
输出中缺少换行符。 有两种方法可以解决这个问题。 一种是使用
nindent
函数而不是 indent
,它也会插入前导换行符
- name: {{ $k }}
{{- $v | toYaml | nindent 7 }}
另一个对空白的考虑更加仔细。
indent
将在每行的开头插入空格,包括第一行,因此包含 indent
的行本身不应缩进。 您确实需要在其前面添加换行符,因此您不需要 Go 模板 -
空白控制标记。 这会引导您
- name: {{ $k }}
{{ $v | toYaml | indent 7 }}
(缩进很重要,第二行不缩进不是打字错误。)
由于您只是尝试按原样从值中重现整个块,因此您也不需要
range
循环,这可以避免这里的一点复杂性。
spec:
template:
spec:
containers:
- env:
{{ .Values.env | toYaml | indent 12 }}