Вы можете использовать оба варианта, в зависимости от того, как вы хотите структурировать свои развертывания.
Следует учитывать следующее
Соображения
Преимущества для одной диаграммы
- Простота развертывания: развертывание только один раз, одиночное сравнение
- Одна версия, поэтому откат / обновление выполняются на одном элементе
- Удалить детали можно с помощью флагов функций
- Установка нового компонента без соприкосновения с остальными элементами может оказаться сложной задачей
Предостережения из одного графика
- Сложнее развертывать несвязанные сервисы, например, фиктивный сервисдля доступа к данным при обновлении базы данных
- Сложнее разделить и протестировать каждый экземпляр
- Сложнее назвать и понять каждый компонент (в разных выпусках ваш
{{.Release.Name}}
уже изменился бы для каждого "приложения""). - Сложнее обеспечить / отслеживать разные циклы выпуска для разных компонентов
- Версии, хранящиеся в одной ConfigMap, что может привести кпроблемы ограничения размера объявления, если у вас есть диаграммы, которые содержат, например, встроенные тестовые данные
Примечание по управлению версиями
У вас может быть основная диаграмма, которую вы используете для тестирования со всемивложенные диаграммы и упаковывать вложенные диаграммы независимо, но при этом все в том же репо.
Например, я обычно держу такие вещи как:
. / helm / charts / whatever / charts / subchart1
. / helm / charts / whatever / charts / subchart2
. / helm / charts / whatever / values.yaml
или
. / helm / charts / whatever-master / values.yaml
. / helm / charts / whatever-master / requirements.yaml
. / helm / charts / whatever-subchart1 / values.yaml
. / helm / charts / whatever-subchart2 / values.yaml
И используйте файл require.yaml на основной диаграмме для извлечения из file://../whatever-subchartx
.
Таким образом, я могу иметь whatever-stress-test
и whatever-subcomponent-unit-test
, оставаясь гибким для развертывания отдельных компонентов, которые имеют разные циклы выпуска, еслитак хотелось.
В конечном итоге это также будет зависеть от вашей стратегии обновления.Обновления Canary, вероятно, потребуют от вас обработки микросервисов с сохранением состояния более конкретным способом, чем вы можете иметь с одной диаграммой, поэтому планируйте соответственно.