Helm vs Kustomize — что выбираешь и почему?
Сначала попробуйте ответить сами30 секунд
Helm — package manager с templates, values и release lifecycle. Kustomize — declarative overlay/patch без templating, встроенный в kubectl. Выбор зависит от packaging, reuse и сложности вариантов окружений.
Пример
кода
helm upgrade --install ingress-nginx ingress-nginx/ingress-nginx -n ingress --create-namespace
kubectl apply -k overlays/prod
kubectl kustomize overlays/prod
Суть
Helm и Kustomize решают похожую боль — управление Kubernetes manifests, но философия разная. Helm генерирует YAML из chart templates и values, хранит release state и хорошо подходит для распространения приложений как пакетов. Kustomize берет обычный YAML и применяет overlays, patches, image transforms и generators без template language. Поэтому Helm сильнее для packaged third-party apps, а Kustomize часто проще для собственных manifests с несколькими окружениями.
Как работает
Helm chart содержит templates, values.yaml, Chart.yaml и может иметь dependencies. Команда helm install/upgrade создает release и хранит историю, rollback и hooks. Минус — templates могут стать сложной программой внутри YAML. Kustomize использует kustomization.yaml: bases/resources, patches, configMapGenerator, secretGenerator, images, labels. kubectl apply -k умеет применять kustomization напрямую. Минус — для сложной параметризации patches могут стать громоздкими. В GitOps часто встречается гибрид: Helm chart как source, Kustomize overlay сверху.
Подводные камни
- Выбирать Helm только потому, что он популярнее. Для простых внутренних манифестов Kustomize может быть прозрачнее.
- Превращать Helm templates в нечитаемую логику. Это ухудшает review и diff.
- Хранить секреты в values.yaml без отдельной secret strategy.
Что отличает сильный ответ
Хороший ответ не должен быть религиозным. Для third-party chart обычно Helm. Для base плюс dev/stage/prod overlays — Kustomize. Для платформы важно, как инструмент интегрируется с GitOps, policy, diff, secret management и ownership команд.
Частые вопросы на собеседовании
- Зачем нужны requests и limits для CPU и памяти? Что будет, если их не задать или задать только limits?
- Что такое ServiceAccount, Role, ClusterRole, RoleBinding и ClusterRoleBinding? Как они связаны?
- Сервис не доступен, хотя поды Running и Ready. Как найдёшь, где разрыв?
- Что такое securityContext? Зачем нужны runAsNonRoot, readOnlyRootFilesystem и drop capabilities?
Типичные ошибки
- Называть Kustomize package manager
- Не знать helm release lifecycle
- Игнорировать GitOps diff и секреты
Что проверяет интервьюер
- Сравнивает подходы
- Приводит use cases
- Понимает trade-offs
Как вы знаете этот вопрос?
Источники
Связанные темы
Вакансии с этим навыком
Kubernetes вакансии- Web Application Engineer - EC First Party Development Department (ECFD)
- Senior Software Engineer, Advertisement Optimization Group - Merchandising and Advertisement Department (MAD)
- Software Engineer, Data Management Platform - Global Ad Technology Supervisory Department (GATD)
- Senior Site Reliability Engineer, Booking Services Search Group - Search Department (SED)
- DX Solution Lead Engineer - Backoffice Business Support Section, Business Support Development Department (BSD)