В статье рассматривается Komodor — сервис, предоставляющий удобный веб-интерфейс для мониторинга за состоянием кластера Kubernetes. В нем реализованы удобные инструменты для отслеживания и управления состоянием развернутых ресурсов и уведомления пользователей в случае непредвиденных ситуаций.
Об инструменте
Komodor представляет собой сервис, разворачиваемый в кластере K8s и позволяющий управлять работающими в нем ресурсами, отслеживать их состояние и гибко настраивать систему уведомлений, сообщающих пользователю о критических ситуациях. При этом создавать новые ресурсы или разворачивать приложения с нуля возможности нет, но можно откатить его на предыдущую версию, выполнив rollback.
Разработчики предоставляют три тарифных плана:
Freemium — доступный для всех с 11 января этого года план, включающий поддержку до 50 узлов, 5 кластеров и 5 пользователей;
Business — 100 узлов, 10 кластеров и 50 пользователей;
Enterprise — корпоративный тарифный план, индивидуальный для каждого отдельного заказчика.
Агент Komodor совместим с Kubernetes 1.16+ на любой ОС.
Установка
Перед установкой необходимо зарегистрироваться на сайте проекта и получить ключ доступа, связанный с аккаунтом.
Установить Komodor Agent можно несколькими способами — воспользовавшись подготовленным скриптом для ручной установки, Helm-чартом или командой Kustomize.
Команда установки доступна в личном кабинете и уже содержит API-ключ вашего аккаунта.
Далее я воспользовался привычным мне инструментом werf, в остальном команда осталась без изменений:
werf helm repo add komodorio https://helm-charts.komodor.io
werf helm repo update
werf helm upgrade --install k8s-watcher komodorio/k8s-watcher \
--set watcher.actions.basic=true \
--set watcher.actions.advanced=true \
--set watcher.actions.podExec=true --set apiKey=XXXYYYZZZ \
--set watcher.clusterName=default \
--set watcher.actions.podExec=true \
--set watcher.resources.secret=true
После развертывания агента в кластере в личном кабинете на сайте Komodor становится доступен веб-интерфейс с дашбордом.
Интерфейс пользователя и возможности инструмента
Главный экран веб-интерфейса выглядит так:
По наполнению он похож на ванильный Dashboard Kubernetes с небольшими дополнениями. В левом меню доступны разделы, соответствующие разделам кластера. Рассмотрим их подробнее.
Services — быстрый доступ к панели со всеми Services, которые можно отфильтровать по различным критериям. При переходе в Service будет доступна полная информация о нем, а также возможность редактировать и управлять его состоянием, включая просмотр связанных с ним событий.
Jobs — просмотр завершенных и выполняющихся Jobs.
Events — просмотр событий, произошедших в кластере.
Resources — просмотр и управление ресурсами кластера. Доступны следующие сущности:
Nodes — доступны drain или cordon выбранного узла, возврат его в кластер, а также детальная информация и перечень всех Pod'ов на узле.
Workloads — доступ к Pod'ам, ReplicaSet'ам, Deployment'ам, Job'ам, CronJob'ам, StatefulSet'ам и DaemonSet'ам. Можно посмотреть полную информацию о ресурсе, удалить или изменить его, изменить количество реплик, перезапустить ресурс, включая Job'ы и CronJob'ы.
Storage — здесь представленны PVC, PV и StorageClass'ы. Можно просмотреть информацию о них или удалить. Редактирование недоступно.
Configuration — ConfigMap'ы, Secret'ы, Resource Quotas, Limit Ranges, HPA и PDB. Для ConfigMap и Secret доступен просмотр полной информации с возможностью редактирования и удаления, для остальных — только просмотр информации. Secret'ы отображаются в Base64.
Networks — K8s Services, Endpoint'ы, Ingress'ы, Network Policies и Endpoint Slices. Можно удалять и редактировать манифесты Services, удалить Ingress, а для остального доступен только просмотр информации.
Custom Resources Definition — на текущий момент отображает только CRDs, которые есть в кластере, описание и редактирование недоступно.
Helm — Helm-релизы. Доступен список ресурсов в релизе, быстрый переход к ним и просмотр манифестов и Values, использованных для релиза, сравнение с определенной версией, а также откат к определенной версии и удаление релиза из кластера.
Проверить функциональность удалось только с релизами Helm 3, так как в тестовом кластере не было релизов Helm 2. В официальной документации подробностей о поддержке Helm 2 найти не удалось.
На оставшихся вкладках можно работать со следующими ресурсами:
Integrations — управление интеграциями (подробнее рассмотрим их ниже);
Monitors — управление мониторами для настройки уведомлений;
Settings — настройки и редактирование профиля, а также управление доступам.
Плюсы и минусы
Среди основных возможностей Komodor можно выделить:
Быструю навигацию по Services, Job'ам и событиям кластера.
Детальную информацию об узлах в кластере, их состоянии, а также управление ими.
Управление основными объектами K8s с возможностью фильтрации по необходимым параметрам (принадлежность к кластеру, пространству имен, состоянию или лейблу) при наличии соответствующих прав.
Просмотр и редактирование ConfigMap'ов и Secret'ов.
Просмотр файловых хранилищ (PV, PVC, SC) и управление ими: доступны удаление и просмотр манифеста.
Просмотр развернутых в кластере приложений по их типу, связи с другими ресурсами, а также управление ими.
Просмотр endpoint'ами, Services K8s и Ingesses и управление ими.
Просмотр Helm-релизов, находящихся в кластере, с возможностью сравнения между собой версий.
Возможность сделать
exec
в Pod, при этом прямо в браузере откроется встроенный терминал.Просмотр логов и событий, доступен режим Follow, при котором логи отображаются в реальном времени.
Отдельно хочу обратить внимание на следующие возможности Komodor:
Управление доступами к ресурсам настраивается прямо в интерфейсе сервиса. Можно создать кастомную политику, добавить ее в роль, а затем выдать эту роль коллеге. При этом нет нужды разбираться с базовой RBAC Kubernetes — достаточно при деплое Komodor в кластер указать в Values нужные права доступа для Watcher'а сервиса.
Удобная настройка мониторов, которые следят за состоянием ресурсов кластера, и в случае срабатывания триггера отправляют уведомления в сервисы наподобие Slack, Teams, Opsgenie, PageDuty или в любое другой, поддерживающий прием вебхуков.
Возможность интеграции с различными сервисами:
облачный Gitlab и GitHub с возможностью посмотреть pull- и merge-реквесты, из которых ресурсы были задеплоены в кластер;
Slack, Microsoft Teams или другой сторонний мессенджер для отправки событий;
системы мониторинга Sentry и NewRelic;
Prometheus и Alertmanager — в этом случае дополнительно будет выводиться информация о потребляемых узлами и Pod'ами ресурсах кластера.
Возможность подключения дополнительных кластеров, что позволит мониторить их состояние из этого же интерфейса Komodor. Для этого при добавлении интеграции будет предложен скрипт для быстрой установки Watcher'а в кластер, после чего его можно добавить в интерфейс и переключаться между кластерами для мониторинга нужного.
На мой взгляд, не обошлось и без минусов:
Можно только просмотреть список Custom Resources кластера, описание недоступно.
На данный момент документация довольно скудная, но она активно развивается и дополняется.
Нельзя подключить self-hosted GitLab, интеграция возможна только с облачным GitLab.
Довольно высокая стоимость тарифа — 30 USD за каждый узел, добавленный в интеграцию.
Возможность использования сервиса только как SaaS — необходимо установить часть софта в кластер, но при этом сам интерфейс предоставляется сервисом и не доступен для self-hosted-установки.
Заключение
На мой взгляд, Komodor предоставляет удобный веб-интерфейс для управления и поддержки кластера Kubernetes. Порадовал приятный дизайн и большой выбор доступных интеграций. При этом цена на бизнес-тарифе кажется высокой, к тому же имеется ограничение на количество собираемых событий за месяц.
Несмотря на эти небольшие минусы, мне кажется, что для небольшой команды разработки Komodor может стать полезным инструментом для работы с кластером или «песочницей» без углубления в дебри командной строки и kubectl.
P.S.
Читайте также в нашем блоге: