Добавить суффикс к каждому члену списка в шаблоне helm - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь перебрать список в шаблоне helm и добавить суффикс для каждого участника.В настоящее время у меня есть этот блок кода, который делает именно это:

{{- range $host := .Values.ingress.hosts }}
{{- $subdomain := initial (initial (splitList "." $host)) | join "." }}
{{- $topLevelDomain := last (splitList "." $host) }}
{{- $secondLevelDomain := last (initial (splitList "." $host)) }}
- host: {{- printf " %s-%s.%s.%s" $subdomain $environment $secondLevelDomain $topLevelDomain | trimSuffix "-" }}
{{- end }}

Поскольку мне нужно дважды выполнять одну и ту же манипуляцию в одном и том же файле, я хочу создать новый список с именем $host-with-env, которыйбудет содержать суффикс, который я ищу.Таким образом, я могу выполнить эту операцию только один раз.
Проблема в том, что я понятия не имею, как создать пустой список в шлеме, поэтому я не могу добавлять элементы из существующего списка в новый.
ЛюбойИдея, как мне этого добиться?
Я тоже в порядке с изменением существующего списка, но каждая манипуляция, которую я применяю к списку, кажется, применима к объему foreach, который я применяю к нему.Есть идеи, как это сделать?

1 Ответ

0 голосов
/ 04 января 2019

Может быть не совсем понятно, какого результата вы пытаетесь достичь, будет полезно добавить ваши данные, такие как values.yaml и желаемый результат.Тем не менее, я добавил пример, который отвечает на ваш вопрос.

Вдохновленный этим ответом , вы можете использовать dictionary .

Этот код добавит суффиксы ко всем .Values.ingress.hosts и поместит их в словарь $hostsWithEnv в список, к которому можно получить доступ myhosts key

values.yaml

ingress:
  hosts:
    - one
    - two

configmap.yaml

{{- $hostsWithEnv := dict "myhosts" (list) -}}
{{- range $host := .Values.ingress.hosts -}}
{{- $var := printf "%s.domain.com" $host | append $hostsWithEnv.myhosts | set $hostsWithEnv "myhosts" -}}
{{- end }}
apiVersion: v1
kind: ConfigMap
metadata:
  name: my-configmap
data:
{{- range $hostsWithEnv.myhosts}}
  - host: {{- printf " %s" . | trimSuffix "-" }}
{{- end }}

выход

$ helm install --debug --dry-run .              
[debug] Created tunnel using local port: '62742'                                 
...                       
# Source: mychart/templates/configmap.yaml        
apiVersion: v1                                  
kind: ConfigMap                                 
metadata:                                       
  name: my-configmap                            
data:                                           
- host: one.domain.com             
- host: two.domain.com
...