Шлем Графики Микросервисы
Представьте, что я разрабатываю приложение на основе микросервисов. Они будут развернуты в kubernetes с помощью Helm Package Manager. Некоторые микросервисы заканчиваются довольно похожей конфигурацией файлов YAML. Некоторые другие могут отличаться с точки зрения конфигурации YAML. Какова лучшая практика для этого? У меня есть несколько вариантов:
- Используйте общую диаграмму и передайте различные конфигурации, используя values.env.yaml для каждого микросервиса, а затем разверните его с другим именем выпуска.
- Создать диаграмму для каждого микросервиса, независимо от того, схожи ли они по конфигурации?
2 ответа
Это вопрос мнения, поэтому я отвечу мнением.
Перевернутая сторона: вам придется изменить только несколько значений в вашем values.yaml в зависимости от микросервиса, и будет проще поддерживать ваш values.yml. Ваш репозиторий Helm Chart может расти не так быстро.
Недостаток: тебя будет сложнее создать
_helpers.tpl
файл например. Этот файл будет быстро расти, и люди, создающие микросервисы, могут запутаться в этом.Перевернутая сторона: разделение вашего микросервиса при масштабировании до сотен. Разработчики могут работать только над своим микросервисным развертыванием.
Недостаток: распространение файлов, слишком много файлов повсюду, и ваш репозиторий Helm Chart может быстро расти. Также существует риск большого дублирования кода.
Более общая практика - номер 2 для официальных карт Хелма, но опять же каждый график предназначен для совершенно другого применения.
Как упомянуто @Rico, это вопрос мнения. Вот мое мнение:
Я думаю, что это хорошая идея, чтобы начать с одной диаграммы, которая подходит всем. Но когда вам нужно добавить очень специфический материал только для нескольких сервисов с особыми требованиями, вы должны создать другую диаграмму. Эта идея очень похожа на Monolith, когда речь заходит о микросервисах.
В моей компании у нас есть один график на ~30 услуг. У них очень похожие потребности, поэтому файлы шаблонов не слишком сложны, а файл _helpers содержит всего около 50 строк. Мы очень довольны этим решением, потому что вам нужно всего несколько строк values.yaml, чтобы подготовить свой сервис к работе.