Что мы на нём делаем
Сервис, работающий в Kubernetes, — это не одна сущность, а деплоймент, сервис, ingress, автоскейлер и набор секретов, которые обязаны согласовываться между собой. Helm превращает этот набор в один чарт со значениями, поэтому окружение — это values-файл, а не каталог почти одинаковых манифестов, расходящихся со временем.
Практическая польза в том, что релиз становится одним ревьюируемым и версионируемым объектом. Видно, что изменилось между двумя деплоями; один и тот же чарт продвигается со стейджинга в продакшен с другими значениями; и всё целиком откатывается, когда деплой пошёл не так, — вместо ручной отмены пяти ресурсов, пока сайт лежит.
Где он нужен
Этот сайт выкатывается именно так. В его чарте лежат деплоймент, ingress, горизонтальный автоскейлер, секреты для получения образа и секреты приложения, а CI применяет чарт после сборки и публикации образа контейнера.
Когда мы его рекомендуем
Как только окружений становится больше одного или сервисов больше одного. Именно в этот момент вручную поддерживаемые манифесты начинают расходиться, и никто уже не уверен, какому файлу соответствует какой кластер.
Для одного сервиса в одном окружении обычные манифесты в Git читаются проще, и это на один шаблонизатор для отладки меньше. Шаблоны Helm по-настоящему неудобны — чувствительный к пробелам YAML, порождаемый Go-шаблонами, — так что они должны что-то приносить. Когда деплоймент один, они не приносят.