Диаграмма руля с зависимыми значениями - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть диаграмма управления, которая может использовать либо внутреннюю базу данных, либо внешнюю базу данных.Значения являются взаимоисключающими.Если одно значение истинно, другое значение должно быть ложным.

Есть ли способ обеспечить взаимную исключительность, чтобы пользователь случайно не включил оба?

Пример использования встроенной базы данных (redis)

helm install foo --set redis.enabled=true --set corvus.enabled=false

Пример использования внешней базы данных (corvus)

helm install foo --set redis.enabled=false --set corvus.enabled=true --set corvus.location=foobar

Я решил не использовать 2 отдельных значения redis.enabled corvus.enabled и вместо этого использовать одно значение, например database, которое можно установитьлибо internal, либо external, однако, поскольку условные выражения helm в Requriements.yaml могут выполнять логику только на логическом значении, я не верю, что это возможно.

dependencies:
  - name: redis
    version: 4.2.7
    repository: https://kubernetes-charts.storage.googleapis.com
    condition: redis.enabled,global.redis.enabled

1 Ответ

0 голосов
/ 28 ноября 2018

Вы можете использовать некоторую магию шаблонов Sprig, чтобы заставить конфигурационные ключи быть взаимоисключающими.В вашем случае вы можете добавить блок следующего вида к любому из шаблонов вашей диаграммы.

{{- if .Values.redis.enabled }}
{{- if .Values.corvus.enabled }}
{{- fail "redis and corvus are mutually exclusive!" }}
{{- end }}
{{- end }}

Это приведет к сбою установки диаграммы, когда оба значения конфигурации оценены как true.

...