在尝试迭代地图数组时尝试使用 helms range 函数时遇到一些问题。
values.yaml - 示例
global:
envVars:
externalSecret:
- name: SECRET_NAME_1
gcpSecret: SECRET_KEY_1
- name: SECRET_NAME_2
gcpSecret: SECRET_KEY_2
我组装的舵手助手是这样的:
{{- define "chart.envVars.externalSecret" -}}
{{- range $externalSecret := .Values.global.envVars.externalSecret -}}
- name: {{ .name }}
valueFrom:
secretKeyRef:
name: {{ include "chart.fullname" $ }}
key: {{ .gcpSecret | replace "_" " " | lower | camelcase }}
{{- end -}}
{{- end -}}
我期望输出的是:
- name: SECRET_NAME_1
valueFrom:
secretKeyRef:
name: chart-fullname
key: SecretName1
- name: SECRET_NAME_2
valueFrom:
secretKeyRef:
name: chart-fullname
key: SecretName2
但是我得到的只是这些错误通过
helm lint
templates/deployment.yaml: unable to parse YAML: error converting YAML to JSON: yaml: mapping values are not allowed in this context
在deployment.yaml中,我所做的就是像这样调用定义的变量:
env:
{{- include "chart.envVarsFull" . | nindent 12 }}
我尝试了多种方法来尝试迭代此列表,但我似乎可以克服指出不允许映射的错误。
尝试过但仍然失败的例子
有比我聪明的人有办法做到这一点吗? :D
干杯!
事实证明我是个白痴!语法实际上有效,我正在查看抛出错误的助手的错误区域。仅供参考,以下 yaml 助手确实按预期工作:
{{- define "chart.envVars.externalSecret" -}}
{{- range $externalSecret := .Values.global.envVars.externalSecret }}
- name: {{ .name }}
valueFrom:
secretKeyRef:
name: {{ include "chart.fullname" $ }}
key: {{ .gcpSecret | replace "_" " " | lower | camelcase }}
{{- end -}}
{{- end -}}