title | permalink |
---|---|
Шаги |
advanced/helm/deploy_process/steps.html |
Во время запуска команды werf converge
werf запускает процесс деплоя, включающий следующие этапы:
- Рендеринг шаблонов чартов в единый список манифестов объектов Kubernetes и их проверка.
- Запуск [хуков]({{ "/advanced/helm/deploy_process/helm_hooks.html" | true_relative_url }})
pre-install
илиpre-upgrade
, отслеживание их работы вплоть до успешного или неуспешного завершения, вывод логов и другой информации. - Применение изменений к ресурсам Kubernetes: создание новых, удаление старых, обновление существующих.
- Создание новых версий релизов и сохранение состояния манифестов ресурсов в данные этого релиза.
- Отслеживание всех ресурсов релиза (для тех, у кого есть пробы, — до готовности readiness-проб), вывод их логов и другой информации.
- Запуск [хуков]({{ "/advanced/helm/deploy_process/helm_hooks.html" | true_relative_url }})
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 и других.
Поведение механизма отслеживания ресурсов может быть сконфигурировано для каждого ресурса [с помощью аннотаций]({{ "/reference/deploy_annotations.html" | true_relative_url }}), которые выставляются в шаблонах чарта.
В случае ошибки во время процесса деплоя, werf создает новый релиз со статусом FAILED
. Далее, этот релиз может быть проанализирован пользователем для поиска и устранения проблем при следующем деплое.
В некоторых случаях, необходима работа с несколькими кластерами Kubernetes для разных окружений. Все что вам нужно, это настроить необходимые контексты kubectl для доступа к необходимым кластерам и использовать для werf параметр --kube-context=CONTEXT
, совместно с указанием окружения.
Во время процесса деплоя werf выполнит рендер, создаст все требуемые ресурсы указанные во всех [используемых сабчартах]({{ "/advanced/helm/configuration/chart_dependencies.html" | true_relative_url }}) и будет отслеживать каждый из этих ресурсов до состояния готовности.