Что такое werf?
werf - это CLI-инструмент для организации полного цикла развертывания приложения с Git в качестве единого и универсального “источника истины”. werf может:
- Собирать docker-образы.
- Деплоить приложение в кластер Kubernetes.
- Убеждаться в том, что приложение запустилось и нормально работает после завершения развертывания.
- Пересобирать docker-образы при внесении изменений в код приложения.
- Ре-деплоить приложение в кластер Kubernetes при необходимости.
- Удалять ненужные и неиспользуемые образы.
Как werf работает?
Что такое converge?
Converge - это процесс сборки docker-образов (и их пересоздания в ответ на изменения), деплоя приложения в кластер Kubernetes (и ре-деплоя при необходимости) и контроля за работоспособностью приложения.
Команда werf converge
запускает этот процесс. Ее может вызывать как пользователь, так и Ci/CD-система или оператор в ответ на изменения в состоянии приложения, описанном в Git. Поведение werf converge
полностью детерминировано и прозрачно с точки зрения Git-репозитория. После завершения converge-процесса, приложение будет соответствовать состоянию, описанному в целевом Git-коммите. Для того, чтобы откатить приложение к предыдущей версии, обычно достаточно выполнить converge на соответствующем более раннем коммите (при этом werf будет использовать образы для этого коммита).
Выполните следующую команду в корневой директории своего проекта, чтобы запустить converge:
werf converge --docker-repo myregistry.domain.org/example-app [--kube-config ~/.kube/config]
Обычно у команды converge имеется только один обязательный аргумент: адрес docker-репозитория. werf будет использовать этот репозиторий для хранения собранных образов и их использования в Kubernetes (то есть репозиторий должен быть доступен из кластера Kubernetes). Kube-config - необязательный аргумент; определяет целевой кластер Kubernetes для подключения. Также имется опциональный параметр --env
(и переменная окружения WERF_ENV
), позволяющий развертывать приложение в различные окружения.
Примечание: Если ваше приложение не использует кастомные docker-образы (а использует только публичные), параметр --docker-repo
можно не указывать.
Дальнейшие шаги
Краткое руководство по началу работы поможет вам развернуть и запустить демо-приложение. Руководства рассказывают о конфигурировании различных приложений, написанных на различных языках программирования и базирующихся на разных фреймворках. Здесь вы можете найти руководство, подходящее для вашего приложения, и воспользоваться приведенными в нем инструкциями.
Желающие получить более глубокое представление о рабочих процессах CI/CD, которые можно реализовать с помощью werf, могут обратиться к этой статье.