我想动态制作一个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
答案 0 :(得分:0)
错误似乎是,领先的-
被削减了。
所以正确的方法是删除减号:
<强>之前:强>
{{- .Values.failoverip1 | indent 2 -}}
<强>后:强>
{{ .Values.failoverip1 | indent 2 -}}
yaml现在是:
apiVersion: v1
kind: ConfigMap
metadata:
name: vip-configmap
data:
{{ .Values.failoverip1 | indent 2 -}}: {{ .Release.Namespace -}}/{{- .Values.target -}} # add your config map here. must map the base64 encoded IP in secrets.yaml
渲染结果为:
kubectl get configmap -o yaml
apiVersion: v1
items:
- apiVersion: v1
data:
0.0.0.0: default/nginx# add your config map here. must map the base64 encoded
IP in secrets.yaml
kind: ConfigMap