Выбор между альтернативными зависимостями в руле - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть рулевой график для приложения, которому нужна какая-то база данных.И mysql, или postgresql подойдут.

Я хотел бы дать пользователю диаграммы возможность установить один из них в качестве зависимости, подобной этой:

dependencies:
- name: mysql
  version: 0.10.2
  repository: https://kubernetes-charts.storage.googleapis.com/
  condition: mysql.enabled
- name: postgresql
  version: 3.11.5
  repository: https://kubernetes-charts.storage.googleapis.com/
  condition: postgresql.enabled

Однако это позволяетвключите оба из них.

Есть ли простой способ убедиться, что выбран только один?

Я думал об одной переменной, выбирающей один из [mysql, postgres, manual] и зависящей от конкретной базы данных, еслиэто выбрано.- Есть ли способ сделать это?

1 Ответ

0 голосов
/ 25 февраля 2019

Я не думаю, что есть простой способ сделать это.В частности, похоже, что поле requirements.yaml condition: принимает только логическое значение (или их список), а не произвольное выражение.Из документации Helm :

Поле условия содержит один или несколько путей YAML (разделенных запятыми).Если этот путь существует в значениях верхнего родительского элемента и разрешается в логическое значение, диаграмма будет включена или отключена на основе этого логического значения.Только первый действительный путь, найденный в списке, оценивается, и если пути не существуют, условие не оказывает влияния.

(Механизм тегов, описанный ниже, очень похож и не помогает).

Когда дело доходит до написания спецификации развертывания, у вас более нормальная условная система, и вы можете проверить, что установлено только одно из значений;поэтому я не думаю, что вы можете предотвратить установку избыточных баз данных, но вы по крайней мере будете использовать только одну из них.Вы также можете поместить в свой файл NOTES.txt предупреждение об этом факте.

{{ if and .Values.mysql.enabled .Values.postgresql.enabled -}}
WARNING: you have multiple databases enabled in your Helm values file.
Both MySQL and PostgreSQL are installed as part of this chart, but only
PostgreSQL is being used.  You can update this chart installation setting
`--set mysql.enabled=false` to remove the redundant database.

{{ end -}}
...