Для чего нужны Helm чарты
Что проверяют
Понимаете ли вы, какую проблему решает Helm: один набор манифестов Kubernetes на несколько окружений плюс управляемые релизы с историей и откатом. Go-разработчику следом часто дают прочитать шаблон или спрашивают, чем Helm отличается от Kustomize.
Как отвечать
Helm это пакетный менеджер для Kubernetes, а чарт это пакет:
Chart.yaml: метаданные, гдеversionэто версия самого чарта, аappVersionверсия приложения внутри. Там же разделdependencies, например чарт PostgreSQL или Redis для стенда;values.yaml: параметры по умолчанию. Для окружений добавляютvalues-prod.yamlили передают--set, значения накладываются поверх дефолтов;templates/: манифесты на шаблонизаторе Gotext/templateс функциями библиотеки Sprig. Синтаксис{{ .Values.image.tag }},range,withиincludeиз_helpers.tplGo-разработчику знаком по стандартной библиотеке;- релиз:
helm upgrade --installставит или обновляет, история ревизий хранится в кластере, по умолчанию в объектах Secret в namespace релиза, аhelm rollbackвозвращает предыдущую ревизию.
Чарты публикуют в OCI-реестрах рядом с образами. Перед выкаткой полезно прогнать helm lint и helm template, чтобы увидеть итоговые манифесты без обращения к кластеру.
Для своего Go-сервиса обычно пишут один чарт с Deployment, Service, ConfigMap и HPA, а тег образа, ресурсы и переменные окружения задают значениями. Упомяните, что сам Helm не следит за дрейфом конфигурации: это делают GitOps-инструменты вроде Argo CD или Flux, которые умеют разворачивать чарты.
Где спотыкаются
Кладут пароли и токены в values.yaml в репозиторий открытым текстом. Секреты подтягивают из внешнего хранилища, например через External Secrets Operator или SOPS.
Считают, что helm rollback откатывает всё. Миграции базы он не отменит, а CRD из каталога crds/ Helm ставит только при первой установке и при апгрейде не обновляет.
Не могут назвать альтернативу. Kustomize встроен в kubectl и работает патчами поверх обычных манифестов без шаблонов, для простых сервисов его часто хватает.