我有一个头盔values.yaml
文件,其中包含以下内容:
env:
- name: VAR_1
value: VALUE_1
- name: VAR_2
value: VALUE_2
在掌舵图中,我想要一个if
,用于检查.Values.env
是否包含带有name=VAR_1
的物品。
我尝试使用{{ if has "VAR_1" .Values.env }}
,但不确定如何进行对象比较,或将.Values.env
插值到.Values.env[].name
(类似于jq
)。
答案 0 :(得分:0)
您需要使用Looping with the range action和If/Else。
您还可以使用uniq function删除重复项,但是相同的name
和不同的value
将被视为唯一。
{{- range .Values.env | uniq -}}
{{- if eq .name "VAR_1" -}}
{{ .name }}: {{ .value }}
{{- end }}
{{- end}}
更新:
这是一个 hacky _helpers.tpl 函数,该函数仅输出首次出现的名称为“ VAR_1”的元素
{{- define "chart.getUniqueValue" -}}
{{- $myDict := dict }}
{{- $searchKey := "VAR_1" }}
{{- range .Values.env | reverse}}
{{- $_ := set $myDict .name .value }}
{{- end }}
{{- range $k, $v := $myDict }}
{{- if eq $searchKey $k}}
{{- $k }} : {{ $v }}
{{- end }}
{{- end }}
{{- end -}}