Я не знаю ничего подобного встроенному. Sprig предоставляет большинство полезных функций для шаблонов руля, но dict функции просто охватывают примитивы.
Вы можете define
назвать шаблон , который занимается бизнесом и рекурсивно указывает конфигурационный файл / карту. Затем include
шаблон при необходимости:
{{- define "recurseFlattenMap" -}}
{{- $map := first . -}}
{{- $label := last . -}}
{{- range $key, $val := $map -}}
{{- $sublabel := list $label $key | join "_" | upper -}}
{{- if kindOf $val | eq "map" -}}
{{- list $val $sublabel | include "recurseFlattenMap" -}}
{{- else -}}
- name: {{ $sublabel | quote }}
value: {{ $val | quote }}
{{ end -}}
{{- end -}}
{{- end -}}
Передача данных конфигурации немного сложна из-за добавления параметра label
и шаблонам передается только одна область .
env: {{ list .Values.config "CONFIG" | include "recurseFlattenMap" | nindent 2 }}
С примерами значений:
config:
server:
port: 3333
first: astr
other:
setting:
name: test
Результаты в
$ helm template .
---
# Source: so61280873/templates/config.yaml
env:
- name: "CONFIG_FIRST"
value: "astr"
- name: "CONFIG_OTHER_SETTING_NAME"
value: "test"
- name: "CONFIG_SERVER_PORT"
value: "3333"