Я использую диаграмму Helm, и мне было интересно, как я могу определить значение по умолчанию. В моем случае я хочу определить дату, когда она не определена в values.yaml, и у меня есть следующий код:
{{- if ne .Value.persistence.home.restoreBackup.date "" }}
{{- $bkDate := .Value.persistence.home.restoreBackup.date }}
{{- else }}
{{- $bkDate := "2022-01-01" }}
{{- end }}
Я хочу установить $bkDate на определенную дату, если она не определена в .Value.persistence.home.restoreBackup.date, но когда я пытаюсь напечатать $bkDate, она пуста.
Вы знаете, что здесь не так?

Пытаться
{{- if ((.Value.persistence.home.restoreBackup).date) }}
{{- $bkDate := .Value.persistence.home.restoreBackup.date }}
{{- else }}
{{- $bkDate := "2022-01-01" }}
{{- end }}
Вы можете проверить параметр with: https://helm.sh/docs/chart_template_guide/control_structures/#modifying-scope-using-with
{{ with PIPELINE }}
# restricted scope
{{ end }}
Примечания Перейти text/template документацию (в разделе «Переменные»):
A variable's scope extends to the "end" action of the control structure ("if", "with", or "range") in which it is declared....
По сути, это означает, что вы не можете определить переменную внутри блока if и сделать ее видимой вне блока.
Для того, что вы хотите сделать, Функция шлема default предлагает простой обходной путь. Вы можете безоговорочно определить переменную, но ее значение будет значением Helm или каким-то значением по умолчанию, если оно не определено.
{{- $bkDate := .Value.persistence.home.restoreBackup.date | default "2022-01-01" -}}
(Обратите внимание, что несколько вещей, кроме пустой строки, являются «ложными» для целей default, включая «неустановленные», nil и пустой список, но практически это не имеет значения для вас.)
Если вам нужна более сложная логика, тогда функция ternary может удовлетворить ваши потребности {{- $var := $someCondition | ternary "trueValue" "falseValue" -}}, но это приводит к трудночитаемым выражениям, и, возможно, лучше провести рефакторинг, чтобы избежать этого.
Меня устраивает! Мне пришлось удалить последний "-", но после этого он работает нормально. Спасибо!
Это может быть полезно: stackoverflow.com/questions/66265193/…