Определите переменную в шаблоне Helm - PullRequest
0 голосов
/ 27 мая 2019

Мне нужно определить переменную на основе оператора if и использовать эту переменную несколько раз.Чтобы не повторять if, я пробовал что-то вроде этого:

{{ if condition}}
    {{ $my_val = "http" }}
{{ else }}
    {{ $my_val = "https" }}
{{ end }}
{{ $my_val }}://google.com

Однако это возвращает ошибку:

Error: render error in "templates/deployment.yaml":
template: templates/deployment.yaml:30:28:
executing "templates/deployment.yaml" at
<include (print $.Template.BasePath "/config.yaml") .>: error calling
include: template: templates/config.yaml:175:59:
executing "templates/config.yaml" at <"https">: undefined variable: $my_val

Идеи?

1 Ответ

2 голосов
/ 27 мая 2019

Самый прямой путь к этому - использовать функцию ternary , предоставляемую библиотекой Sprig .Это позволило бы вам написать что-то вроде

{{ $myVal := ternary "http" "https" condition -}}
{{ $myVal }}://google.com

Более простой, но более косвенный путь - написать шаблон, который генерирует значение и вызывает его

{{- define "scheme" -}}
{{- if condition }}http{{ else }}https{{ end }}
{{- end -}}

{{ template "scheme" . }}://google.com

Если вам нужновключив это в другую переменную, Helm предоставляет функцию include, которая действует точно так же, как template, за исключением того, что это «выражение», а не то, что выводит напрямую.

{{- $url := printf "%s://google.com" (include "scheme" .) -}}
...