来自 values.yaml 的 Helm yaml 密钥

Helm yaml keys from values.yaml

我想动态创建一个 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

错误似乎是前导 - 被截断了。

所以正确的方法是去掉那个减号:

之前:

{{- .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