Как вы производите обновление чартов в Helm?

«Как вы производите обновление чартов в Helm?» — вопрос из категории Kubernetes, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Основной инструмент для обновления — команда helm upgrade. В реальных проектах я комбинирую её с дополнительными флагами и практиками для обеспечения надёжности.

Базовое обновление:

helm upgrade my-release ./my-chart --values values.yaml

Ключевые флаги и сценарии их использования:

  • --install: Создаёт релиз, если он не существует. Стандартная практика в CI/CD-пайплайнах.
    helm upgrade --install my-release ./my-chart
  • --atomic: Автоматически выполняет откат, если обновление не удалось. Критически важно для продакшн-развёртываний.
    helm upgrade --atomic --timeout 5m my-release ./my-chart
  • --reuse-values: Сохраняет пользовательские значения из предыдущего релиза. Полезно при обновлении только версии чарта.
  • --reset-values: Игнорирует предыдущие значения и использует только те, что указаны в команде (по умолчанию из values.yaml).

Практики, которые я применяю:

  1. Предварительный просмотр изменений: Перед upgrade всегда запускаю helm diff для проверки, какие ресурсы в Kubernetes будут изменены.
    helm diff upgrade my-release ./my-chart
  2. Версионирование: Чарты версионирую по SemVer, а в CI/CD передаю конкретную версию для воспроизводимости.
  3. Структура values: Использую несколько файлов values (например, values-prod.yaml, values-staging.yaml) и передаю нужный через --values.
  4. Откат: Если что-то пошло не так, делаю откат к предыдущей рабочей версии.
    helm rollback my-release 1