Использование переменных в Helm

Я использую диаграмму 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, она пуста.

Вы знаете, что здесь не так?

Это может быть полезно: stackoverflow.com/questions/66265193/…

Blender Fox 09.05.2022 18:24
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
0
1
40
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Пытаться

{{- 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" -}}, но это приводит к трудночитаемым выражениям, и, возможно, лучше провести рефакторинг, чтобы избежать этого.

Меня устраивает! Мне пришлось удалить последний "-", но после этого он работает нормально. Спасибо!

Felipe 10.05.2022 11:57

Другие вопросы по теме