I have a helm values.yaml file that contains the following:
env:
- name: VAR_1
value: VALUE_1
- name: VAR_2
value: VALUE_2In my helm chart I'd like to have an if that checks if .Values.env contains an item with name=VAR_1.
I tried with {{ if has "VAR_1" .Values.env }} but I am not sure how to do object comparison, or to interpolate .Values.env to .Values.env[].name (similar to jq).
You need to use Looping with the range action and If/Else.
Also you can remove duplicates with uniq function, however same name with different value will be considered unique.
{{- range .Values.env | uniq -}}
{{- if eq .name "VAR_1" -}}
{{ .name }}: {{ .value }}
{{- end }}
{{- end}}Update:
Here's a hacky _helpers.tpl function that will output only the first occurrence of element with "VAR_1" name
{{- 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 -}}