Во время запуска команды werf converge werf запускает процесс деплоя, включающий следующие этапы:

  1. Рендеринг шаблонов чартов в единый список манифестов объектов Kubernetes и их проверка.
  2. Запуск хуков pre-install или pre-upgrade, отслеживание их работы вплоть до успешного или неуспешного завершения, вывод логов и другой информации.
  3. Применение изменений к ресурсам Kubernetes: создание новых, удаление старых, обновление существующих.
  4. Создание новых версий релизов и сохранение состояния манифестов ресурсов в данные этого релиза.
  5. Отслеживание всех ресурсов релиза (для тех, у кого есть пробы, — до готовности readiness-проб), вывод их логов и другой информации.
  6. Запуск хуков post-install или post-upgrade, отслеживание их работы вплоть до успешного или неуспешного завершения, вывод логов и другой информации.

ЗАМЕЧАНИЕ. werf удалит все созданные им при деплое ресурсы сразу во время процесса деплоя, если он завершится неудачей на любом из указанных выше этапов!

Во время выполнения Helm-хуков на шагах 2 и 6 werf будет отслеживать ресурсы хуков до их успешного завершения. Отслеживание может быть настроено для каждого из хуков ресурсов.

Отслеживание ресурсов

На шаге 5, werf будет отслеживать ресурсы релиза до их перехода в статус Ready. Все ресурсы отслеживаются одновременно, результат отслеживания всех ресурсов релиза выводится комбинированно с периодическим выводом т.н. таблицы прогресса.

werf отслеживает и выводит логи подов Kubernetes только до перехода их в статус “Ready”. Для подов заданий (ресурсы с Kind: Job), логи выводятся до момента завершения работы соответствующих подов.

С точки зрения реализации, для отслеживания ресурсов используется библиотека kubedog. В настоящий момент отслеживание ресурсов поддерживается для следующих типов: Deployment, StatefulSet, DaemonSet и Job. Планируется реализация поддержки отслеживания ресурсов с типом Service, Ingress, PVC и других.

Tracking behaviour can be configured for each resource using resource annotations, which should be set in the chart templates.

Поведение механизма отслеживания ресурсов может быть сконфигурировано для каждого ресурса с помощью аннотаций, которые выставляются в шаблонах чарта.

Если деплой завершился неудачно

В случае ошибки во время процесса деплоя, werf создает новый релиз со статусом FAILED. Далее, этот релиз может быть проанализирован пользователем для поиска и устранения проблем при следующем деплое.

Работа с несколькими кластерами Kubernetes

В некоторых случаях, необходима работа с несколькими кластерами Kubernetes для разных окружений. Все что вам нужно, это настроить необходимые контексты kubectl для доступа к необходимым кластерам и использовать для werf параметр --kube-context=CONTEXT, совместно с указанием окружения.

Сабчарты

Во время процесса деплоя werf выполнит рендер, создаст все требуемые ресурсы указанные во всех используемых сабчартах и будет отслеживать каждый из этих ресурсов до состояния готовности.