Похоже, что Helm - это путь, но, на мой взгляд, вам нужно больше думать о том, как вы будете доставлять обновления для своего программного обеспечения.Например, предоставите ли вы единственную «версию» всего стека, которая переводится в конкретную композицию версий инфраструктуры и микросервисов, или разрешите своим клиентам обновлять отдельные микросервисы по мере их выпуска.У вас может быть одна огромная диаграмма руля для всего, или вы можете использовать, как я в большинстве случаев, «зонтичную» диаграмму.Он содержит подкарты для всех микросервисов и т. Д.
Моя обычная установка содержит подкарту для каждого сервиса, тогда имена сервисов правильно размещаются в пространстве имен, поэтому на них можно ссылаться как .Release.Name-subchart[-optional]
.Кроме того, когда мне нужно обновить, я просто обновил всю диаграмму примерно так: --reuse-values --set subchart.image.tag=v1.x.x
, что дает детальный контроль над каждой версией сервиса.Я также управляю ресурсами каждого подкарта с помощью if .Values.enabled
, чтобы я мог по отдельности включать / набирать ресурсы каждого субчарта.
Уродливая сторона этого заключается в том, что если вы хотите выпустить обновление одной службы, вам все равно нужно запуститьвся зонтичная диаграмма, оставляя большую поверхность для какой-то ошибки, но с другой стороны, она дает возможность развернуть все решение в одной команде (по умолчанию установлены теги :latest
, поэтому при чистой установке всегда будут установлены последние опубликованные версии, а затемполучать обновления с помеченными релизами)