В библиотеке kubedog появилась поддержка канареечных выкатов Flagger
Наш 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.
Читайте также в блоге: