【发布时间】:2018-05-26 17:20:14
【问题描述】:
我想动态创建一个 yaml KEY(不是值)。
在我的values.yaml
failoverip1: 0.0.0.0` (<- this is only a demo IP)
在我的templates/configmap.yaml 我有这个:
apiVersion: v1
kind: ConfigMap
metadata:
name: vip-configmap
data:
{{- .Values.failoverip1 -}}: {{ .Release.Namespace -}}/{{- .Values.target -}}
^^^^^^^^^^^^^^^^^^^^^----> here should be an IP address from values.yaml
{{ .Release.Namespace -}}/{{- .Values.target -}} 渲染成功。
但如果我将{{- .Values.failoverip1 -}} 添加到关键部分,它不会呈现任何内容。
(没有什么意思,整个data: 块,不会被渲染。
这是我运行helm install --name hetzner-failover .时的错误信息
Error: YAML parse error on hetzner-failover/templates/configmap-ip.yaml: error converting YAML to JSON: yaml: line 4: mapping values are not allowed in this context
是不是不可以做一个
- 关键动态?
- 如果没有,怎么绕过去?
这是我所说的回购:
https://github.com/exocode/helm-charts/blob/master/hetzner-failover/templates/configmap-ip.yaml
【问题讨论】:
-
尝试时会发生什么?
-
但要回答您的问题:模板仅被视为标准文本。键和值对于模板引擎来说并不特殊,因此任何东西都可以是动态的。
-
@Flimzy。那么解析任何文本应该没有问题吗?我现在在问题中添加了错误:
Error: YAML parse error on hetzner-failover/templates/configmap-ip.yaml: error converting YAML to JSON: yaml: line 4: mapping values are not allowed in this context -
模板引擎解析任何文本都没有问题。不过,Helm 仍然希望您生成有效的 YAML(该错误表明您没有这样做)。
-
我找到了解决方案:它是领先的
-截断了 intedation :-){{ .Values.failoverip1 | indent 2 -}}
标签: yaml go-templates kubernetes-helm