値ファイルでオプションのブロックを作成し、テンプレートでそれを参照するにはどうすればよいですか?
たとえば、次のような値のファイルがあるとします。
# values.yaml
foo:
bar: "something"
そして、私はこのようなヘルムテンプレートを持っています:
{{ .Values.foo.bar }}
値ファイルのfoo.barをオプションにしたい場合はどうなりますか? foo
キーが値に存在しない場合、エラーが発生します。
If条件付きとして追加してみました。ただし、foo
キーがない場合は、これでも失敗します。
{{ if .Values.foo.bar }}
{{ .Values.foo.bar }}
{{ end }}
どんな考えでも大歓迎です。
私はこの同じ質問に対する答えを探して回りましたが、そこには何も見つかりませんでした。カスタム関数を使用する必要があるようですので、私はそれを書きました。これが私が思いついたものです。それは私のユースケースで機能し、フィードバック/改善は大歓迎です。
_helpers.tpl
{{- define "hasDeepKey" -}}
{{- $mapToCheck := index . "mapToCheck" -}}
{{- $keyToFind := index . "keyToFind" -}}
{{- $keySet := (splitList "." $keyToFind) -}}
{{- $firstKey := first $keySet -}}
{{- if index $mapToCheck $firstKey -}}{{*/ The key was found */}}
{{- if eq 1 (len $keySet) -}}{{*/ The final key in the set implies we're done */}}
true
{{- else }}{{*/ More keys to check, recurse */}}
{{- include "hasDeepKey" (dict "mapToCheck" (index $mapToCheck $firstKey) "keyToFind" (join "." (rest $keySet))) }}
{{- end }}
{{- else }}{{/* The key was not found */}}
false
{{- end }}
{{- end }}
values.yaml:
{{- if eq "true" (include "hasDeepKey" (dict "mapToCheck" .Values "keyToFind" "foo.bar")) }}
bar: {{- .Values.foo.bar }}
{{- end }}