Helm включает определение карты в _helpers

#kubernetes-helm

#kubernetes-helm

Вопрос:

Я пытаюсь включить карту, которая определена в файле _helper.tpl, но не могу. Я получаю сообщение об ошибке «at: range не может выполнить итерацию» (ничего больше).

значения.yaml

 services:
  - serviceX
  - serviceY
  

_helpers.tpl

 {{/*
Define the mapping values
*/}}
{{- define "associated.resources" }}
{{- $resourceMapping := dict "serviceX" "config1" "serviceY" "config2" "serviceZ" "config5" -}}
{{- end }}
  

configmap.yaml

 ...
{{- $resourcesMap := include "associated.resources" . }}
{{- range $k, $v := $resourcesMap }}
{{- if (has $k $.Values.services) }}
   - $v
{{- end }}
{{- end }}
  

Я действительно не знаю, как установить карту и включить ее затем в мой файл configmap. Поддерживает ли метод include тип карты? Кажется, что он возвращает только строку.

Спасибо

Ответ №1:

Перемещение всей логики в __helpers.tpl может решить проблему.

__helpers.tmp

 {{/*
Define the mapping values
*/}}
{{- define "associated.resources" }}
{{- $resourceMapping := dict "serviceX" "config1" "serviceY" "config2" "serviceZ" "config5" -}}
{{- range $k, $v := $resourceMapping }}
{{- if (has $k $.Values.services) }}
  - {{ $v }}
{{- end }}
{{- end }}
{{- end }}
  

configmap.yaml

 {{-  include "associated.resources" . | indent 6 }}
  

Комментарии:

1. Спасибо. Вы правы. Лучше изменить логику, чтобы решить мою проблему.