Назад к вопросам
Middle
109
questionbank

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

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Обновление чартов в Helm выполняется командой helm upgrade.

Основные флаги, используемые при обновлении:

  • --install: Если релиз с указанным именем не существует, Helm установит его. Удобно для idempotency.
  • --version <версия_чарта>: Указывает конкретную версию чарта для обновления. Если флаг не указан, используется последняя стабильная версия.
  • --values <файл_значений>: Переопределяет значения по умолчанию в values.yaml, используя указанный файл. Можно использовать несколько раз.
  • --set <ключ=значение>: Переопределяет значения по умолчанию прямо в командной строке. Удобно для небольших изменений.
  • --namespace <пространство_имён>: Указывает пространство имён, где находится релиз.
  • --atomic: Откатывает обновление, если оно завершилось неудачно (например, из-за проблем с развертыванием подов).
  • --wait: Ожидает, пока все ресурсы релиза не станут готовыми перед объявлением об успешном обновлении.

Пример использования:

# Обновление релиза 'my-release' в пространстве имён 'default'
# с использованием новой версии чарта './mychart'
# и переопределением значения 'image.tag' из файла 'values.yaml'
helm upgrade my-release ./mychart --namespace default --values values.yaml --set image.tag=latest

Процесс обновления включает:

  1. Helm загружает указанную версию чарта.
  2. Применяет переопределенные значения (из файлов --values и флагов --set).
  3. Генерирует манифесты Kubernetes на основе шаблонов чарта и финальных значений.
  4. Отправляет эти манифесты в Kubernetes API сервер.
  5. Kubernetes выполняет rolling update для развернутых ресурсов (например, Deployment).
  6. При использовании --atomic, если развертывание завершается неудачно, Helm автоматически выполняет откат к предыдущей рабочей версии релиза.

Helm сохраняет историю всех релизов, что позволяет откатывать изменения при необходимости с помощью команды helm rollback.