В статье рассматривается 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.

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

Комментарии (0)