В библиотеке kubedog появилась поддержка канареечных выкатов Flagger

dae23bd46cde89e889dfac6081a01768

Наш Open Source-инструмент для отслеживания ресурсов Kubernetes — kubedog — «научился» следить за канареечными выкатами, реализованными с помощью Flagger. Чтобы объяснить суть новости, начнем с краткого пояснения о предназначении обоих упомянутых проектов.

Что такое kubedog

kubedog — библиотека, написанная на Go, которая отслеживает события ресурсов K8s — Pod, Deployment, StatefulSet и других, — выводит их логи и сигнализирует об ошибках. kubedog используется в CI/CD-утилите werf для слежения за ходом выката Helm-чартов. Для нас это основной сценарий применения kubedog, но он востребован и как самостоятельный инструмент. Подробнее о проекте можно прочитать в его анонсе 2018 года или на GitHub.

Что такое Flagger

Flagger — это Kubernetes-оператор для управления выкатами, основанными на разных стратегиях: Canary, A/B, Blue/Green. Он принадлежит семейству проектов Flux и использует один из вариантов service mesh (например, Istio), чтобы маршрутизировать и переключать трафик. Для анализа результатов деплоя используются метрики Prometheus или других систем.

Как работает интеграция

В конце августа к нам обратился пользователь David de Lucca с предложением реализовать новый трекер в kubedog — для Flagger. К слову, это был не первый случай, когда сообщество говорило о такой потребности.

Команда Дэвида использует kubedog для наблюдения за развертываниями приложений, а для канареечных деплоев — Flagger. В итоге, Дэвид сам реализовал задуманное для kubedog. Вот как сейчас всё работает:

  • kubedog ждет готовности специального ресурса Canary, который сам создает Deployment«ы.

  • При выкате новой версии приложения Canary следит за трафиком.

  • Если с трафиком всё в порядке, старые Deployment«ы заменяются на новые.

Эта реализация стала частью последнего релиза kubedog — v0.6.0.

Что дальше

Сейчас во время канареечного деплоя kubedog дожидается готовности ресурса Canary и выводит лишь простой статус — Progressing. В качестве развития этой интеграции можно добавить более детальную информацию по создаваемым Deployment«ам и Pod«ам, включая логирование.

Кроме того, аналогичная интеграция может оказаться полезной для других известных утилит. Например, недавно в GitHub«е проекта появился похожий запрос для Argo Rollouts.

P.S.

Читайте также в блоге:

© Habrahabr.ru