1. конечно, tiller. Которого, поидее, надо заводить несколько штук для нормального разграничения прав.
2. это куча дополнительных сущностей, которые, по факту, нахер не нужны. Это release, app version, revision и т.д. Мало того, что они не решают никакую проблему, так о них еще и куб ничего не знает. В итоге в хельм ты думаешь о релизе, а по факту в кластере у тебя деплоймент.
3. YAML-шаблонизация. Это прям полный атас. Вроде пишешь ты yaml, но надо думать о правилах go-шаблонизатора. В итоге добавлять какие-то либо условия в шаблон это лютая боль, потому что надо и правильные indent соблюсти, и сделать так чтобы читалось, но при этом и проходило правила гошного темлейтинга. И это прям боль, жесть и слезы. В итоге любой шаблон через пару итераций превращается в нечитабельное говно.
4. Хер изменишь готовый пакет. Вот взял я prometheus chart, а он рассчитан исключительно на работу по домену и там в ingress вшито поле host, а оно мне не надо, я хочу юзать IP от GCP и все. Но этого я сделать уже не смогу, потому что YAML-шаблонизируется, а не генерируется. Можно попытаться форкнуть чарт и добавить туда условие, которое позволит юзать ip, вместо домена, что будет довольно сложно, потому что в шаблоне и так много логики. Но даже если ты это сделаешь, ты превратишь в нечитабельное и сложноподдерживаемое говнище, которым, он, в общем-то, является и так, даже и без этого условия.
5. Необходимость размазывать параметры по разным чартам, чтобы их переопределять. В разных окружениях приложение должно запускаться с разными параметрами. Для этого, как правило, создается chart окружения, в котором все перезаписывается. Лежит он, ест-но, где-то в стороне. Получается, что он выходит из под ответственности команды, которая отвечает за сервис, потому что конфигурация теперь не у них. А хочется чтобы команда, которая пилит сервис, у себя могла описать все необходимые параметры для всех окружений, полностью отвечать за настройку сервиса и определять где, что и как должно быть. Kapitan, например, эту проблему решает через описание в "пакете" параметров для всех окружений, а сам пакет в репе с приложением. Все чудно, вся настройка в руках у команды, делает все что считает нужным и другим не мешает, ответственность не размазывается.
6. Нет единой точки правды. Где мне ее смотреть в helm? В чарте? Там нихрена не поймешь. В кубе? Он ничего не знает о сущностях хельма. В тиллере? В нем то что он применял, а не то что в кластере.
Во, давай предметно.
1. У тебя тут больше вопрос красоты ведь? Несколько тиллеров завести - это по 5-10 минут на каждый.
2. Хелм мыслит релизами, всё остальное не обязательно. Но да, я согласен. С другой стороны - у тебя всё равно сбоку какой-то релизный цикл есть - и их можно синхронизировать с хелмом.
3. У меня вообще другой опыт. Чтобы было понятно - у меня в поддержке около 200 чартов - и я вообще не вижу там боли и слёз. И тем более не вижу нечитабельного говна.
4. Просто форкаешь и делаешь под себя, не наследуя логику общего чарта. Как с ролями в ансибл - берешь роль, выкидываешь из неё всю common-логику.
5. Это вопрос только твоего процесса, тут сам хелм никак тебе ничего не запрещает и не требует.
6. Согласен, тут может быть сложно.