Helm — must-have инструмент для деплоя в Kubernetes. Но даже опытные инженеры наступают на одни и те же грабли, особенно в проде. Разберём, какие ошибки чаще всего приводят к падениям и багам.
🔸 1. helm upgrade без флага –atomic
Без –atomic Helm не откатывает релиз при ошибке — в кластере остаётся полусломанное состояние.
Решение: всегда используйте –atomic на проде:
helm upgrade my-app ./chart --atomic --install🔸 2. Забытый values.yaml с тестовыми значениями Нередко инженеры коммитят values.yaml с включёнными debug-логами, выключенным HPA и отключённым SSL.
Решение:
Разделяй values по окружениям (values-prod.yaml, values-staging.yaml)
Используй .gitignore для временных файлов
Применяй валидацию с helm-schema-gen
🔸 3. Не pinned зависимости в Chart.yaml
Если чарты-зависимости подтягиваются без фиксации версий (version: ^1.2.3), то обновления могут неожиданно всё сломать.
Решение:
Фиксируй зависимости чётко: version: 1.2.3 и контролируй обновления вручную.
🔸 4. Отсутствие pre-upgrade и post-upgrade хуков
Если приложение требует миграций БД или прогрева кэша, а хуки не заданы — велика вероятность получить нерабочий релиз.
Решение:
Определи хуки в templates/hooks.yaml:
apiVersion: batch/v1
kind: Job
metadata:
annotations:
"helm.sh/hook": pre-upgrade🔸 5. Helm secrets хранятся в чистом виде в Git
Распакованный secrets.yaml в Git — это инцидент.
Решение:
Используй helm-secrets с sops
Шифруй secrets.yaml и расшифровывай только при деплое:
helm secrets upgrade my-app -f secrets.enc.yamlhelm secrets upgrade my-app -f secrets.enc.yaml
✅ Вывод:
Helm — мощный, но не прощающий ошибок инструмент. Настрой atomic деплой, следи за values и зависимостями, автоматизируй pre/post-хуки и защищай секреты. Это минимальный чеклист для прод-готовности.