Обзор графических интерфейсов для Kubernetes
Для полноценной работы с системой важно знание утилит командной строки: в случае с Kubernetes это kubectl. С другой стороны, хорошо спроектированные, продуманные графические интерфейсы могут выполнять большую часть обычных задач и открыть дополнительные возможности при эксплуатации систем.
В прошлом году мы публиковали перевод небольшого обзора web UI для Kubernetes, приуроченного к анонсу веб-интерфейса Kubernetes Web View. Автор той статьи и самой утилиты — Henning Jacobs из компании Zalando — как раз позиционировал новинку в качестве «kubectl для веба». Он хотел создать инструмент с удобными возможностями для взаимодействия в формате техподдержки (например, быстро показать проблему веб-ссылкой) и для реакции на инциденты, поиска проблем во многих кластерах одновременно. Его детище развивается и в настоящее время (в основном, силами самого автора).
Обслуживая множество Kubernetes-кластеров разных масштабов, мы тоже заинтересованы в возможности предоставлять клиентам инструмент визуальной работы. При выборе подходящего интерфейса ключевыми для нас были следующие возможности:
- поддержка разграничения прав пользователей (RBAC);
- визуализация состояния пространства имен и стандартных примитивов Kubernetes (Deployment, StatefulSet, Service, Cronjob, Job, Ingress, ConfigMap, Secret, PVC);
- получение доступа к командной строке внутри pod«a;
- просмотр логов pod«ов;
- просмотр состояния pod«ов (
describe status
); - удаление pod«ов.
Другие функции, такие как просмотр потребляемых ресурсов (в разрезе pod«ов/контроллеров/пространств имён), создание/редактирование примитивов K8s, в рамках нашего рабочего процесса не актуальны.
Обзор мы начнем с классического Kubernetes Dashboard, принятого за стандарт у нас. Поскольку мир не стоит на месте (а значит — у Kubernetes появляются всё новые GUI), расскажем и о его актуальных альтернативах, обобщив всё в сравнительной таблице в конце статьи.
NB: В обзоре мы не будем повторяться с теми решениями, что уже рассматривались в прошлой статье, однако — для полноты картины — релевантные опции из неё (K8Dash, Octant, Kubernetes Web View) включены в финальную таблицу.
1. Kubernetes Dashboard
- Страница документации;
- Репозиторий (8000+ звёзд GitHub);
- Лицензия: Apache 2.0;
- Вкратце: «Универсальный веб-интерфейс для кластеров Kubernetes. Он позволяет пользователям управлять приложениями, работающими в кластере, и устранять их неполадки, а также управлять самим кластером».
Это панель общего назначения, рассматриваемая авторами Kubernetes в официальной документации (хотя и не разворачиваемая по умолчанию). Она предназначена для нужд повседневной эксплуатации и отладки приложений в кластере. У себя мы её используем как полноценное легковесное визуальное средство, позволяющее предоставить разработчикам необходимый и достаточный доступ к кластеру. Её возможности покрывают все их потребности, что возникают в процессе использования кластера (в этой статье мы демонстрировали некоторые фичи панели). Как легко догадаться, это означает, что она удовлетворяет всем нашим требованиям, перечисленным выше.
Среди основных возможностей Kubernetes Dashboard:
- Навигация: просмотр основных объектов K8s в разрезе пространств имен.
- При наличии прав администратора панель показывает узлы, пространства имен и Persistent Volumes. По узлам доступна статистика по использованию памяти, процессора, выделение ресурсов, метрики, статус, события и т.п.
- Просмотр приложений, развёрнутых в пространстве имен, по их типу (Deployment, StatefulSet и др.), связей между ними (ReplicaSet, Horizontal Pod Autoscaler), общей и персонализированной статистики и информации.
- Просмотр сервисов и Ingress«ов, а также их связей с pod«ами и endpoint«ами.
- Просмотр файловых объектов и хранилищ: Persistent Volume и Persistent Volume Claim.
- Просмотр и редактирование ConfigMap и Secret.
- Просмотр логов.
- Доступ к командной строке в контейнерах.
Значимый недостаток (впрочем, не для нас)— нет поддержки мультикластерной работы. Проект активно развивается сообществом и поддерживает актуальные функции с выходом новых версий и спецификаций Kubernetes API: последняя версия панели — v2.0.1 от 22 мая 2020 г. — протестирована на совместимость с Kubernetes 1.18.
2. Lens
Проект позиционируется как полноценная интегрированная среда разработки (IDE) для Kubernetes. Причем она оптимизирована для работы со множеством кластеров и большим количеством запущенных в них pod«ов (протестировано на 25 тысячах pod«ов).
Основные особенности/возможности Lens:
- Автономное приложение, не требующее установки чего-либо внутри кластера (точнее, для получения всех метрик потребуется Prometheus, но для этого можно использовать и уже существующую инсталляцию). «Основная» же инсталляция производится на персональный компьютер под управлением Linux, macOS или Windows.
- Мультикластерное управление (поддерживаются сотни кластеров).
- Визуализация состояния кластера в реальном времени.
- Графики использования ресурсов и тенденции с историей на основе встроенного Prometheus.
- Доступ к командной строке контейнеров и на узлах кластера.
- Полная поддержка Kubernetes RBAC.
Актуальный релиз — 3.5.0 от 16 июня 2020 г. Изначальная версия была создана в компании Kontena, а на сегодняшний день вся интеллектуальная собственность передана в специальную организацию Lakend Labs, называемую «объединением cloud native-гиков и технологов», что отвечают за «сохранение и доступность Open Source-ПО и продуктов Kontena».
Lens — второй по популярности проект на GitHub из категории GUI для Kubernetes, «проигрывающий» только собственно Kubernets Dashboard. Все остальные Open Source-решения не из категории CLI* значительно уступают в популярности.
* См. про K9s в бонусной части обзора.
3. Kubernetic
Это проприетарное приложение, которое устанавливается на персональный компьютер (поддерживаются Linux, macOS, Windows). Его авторы обещают полную замену утилиты командной строки, а вместе с ним — отсутствие необходимости запоминать команды и даже десятикратное увеличение скорости работы.
Одной из интересных особенностей инструмента является встроенная поддержка Helm-чартов, а одним из недостатков — отсутствие метрик производительности приложений.
Главные фичи Kubernetic:
- Удобное отображение состояния кластера. Один экран для просмотра всех связанных объектов кластера и их зависимостей; красное/зеленое состояние готовности для всех объектов; режим просмотра состояния кластера с обновлением статуса в реальном времени.
- Кнопки быстрого действия для удаления и масштабирования приложения.
- Поддержка мультикластерной работы.
- Простая работа с пространствами имен.
- Поддержка Helm-чартов и репозиториев Helm (в том числе, приватных). Установка и управление чартами в веб-интерфейсе.
Актуальная стоимость продукта — разовый платеж в размере 30 евро за его использование одним человеком для любого числа пространств имён и кластеров.
4. Kubevious
- Сайт;
- Презентация;
- Репозиторий (~500 звёзд GitHub);
- Лицензия: Apache 2.0
- Вкратце: «Kubevious делает кластеры Kubernetes, конфигурацию приложений и просмотр их состояния безопасным и простым для понимания».
Идея проекта в создании инструмента, предназначенного для анализа и отладки конфигураций приложений, развёрнутых в кластере. Авторы сосредоточились в первую очередь на реализации этих фич, оставив более общие вещи на потом.
Основные особенности и функции Kubevious:
- Визуализация кластера способом, ориентированным на приложения: взаимосвязанные объекты в интерфейсе группируются, выстраиваясь в иерархию.
- Наглядное отображение зависимостей в конфигурациях и каскадных последствий их изменений.
- Отображение ошибок конфигурирования кластера: неправильное использование меток, пропущенные порты и т.п. (К слову, если вам интересна эта фича, обратите внимание на Polaris, о котором мы уже писали.)
- В дополнение к предыдущему пункту — доступно обнаружение потенциально опасных контейнеров, т.е. имеющих слишком большие привилегии (атрибуты
hostPID
,hostNetwork
,hostIPC
, монтированиеdocker.sock
и тому подобное). - Продвинутая система поиска по кластеру (не только по названиям объектов, но и по их свойствам).
- Инструменты для планирования мощностей и оптимизации ресурсов.
- Встроенная «машина времени» (возможность видеть произошедшие ранее изменения конфигурации объектов).
- Управление RBAC при помощи сводной взаимосвязанной таблицы из Roles, RoleBindings, ServiceAccounts.
- Работает только с одним кластером.
У проекта совсем короткая история (первый релиз состоялся 11 февраля 2020 г.) и как будто бы наметился период то ли стабилизации, то ли замедления в развитии. Если предыдущие версии выпускались часто, то последний релиз (v0.5 от 15 апреля 2020 г.) отстал от начального темпа разработки. Наверное, это связано с небольшим числом контрибьюторов: в истории репозитория их всего 4, а вся фактическая работа ведётся одним человеком.
5. Kubewise
- Страница проекта;
- Лицензия: проприетарная (станет Open Source);
- Вкратце: «Простой мультиплатформенный клиент для Kubernetes».
Новый продукт от компании VMware, изначально созданный в рамках внутреннего хакатона (в июне 2019 года). Устанавливается на персональный компьютер, работает на базе Electron (поддерживаются Linux, macOS и Windows) и требует kubectl не ниже v1.14.0.
Основные возможности Kubewise:
- Взаимодействие в интерфейсе с самыми часто используемыми сущностями Kubernetes: узлами, пространствами имен и т.п.
- Поддержка нескольких файлов kubeconfig для разных кластеров.
- Терминал с возможностью установки переменной окружения
KUBECONFIG
. - Генерация кастомных файлов kubeconfig для заданного пространства имен.
- Расширенные возможности безопасности (RBAC, пароли, service accounts).
Пока что у проекта всего один релиз — версия 1.1.0 от 26 ноября 2019 года. Причем авторы планировали сразу выпустить его как Open Source, однако из-за внутренних проблем (не связанных с техническими вопросами) не смогли этого сделать. По состоянию на май 2020, авторы работают над следующим релизом и одновременно с ним должны инициировать процесс открытия кода.
Бонус
1. Portainer on Kubernetes в бета-версии
Проект от команды Portainer, разработавшей одноимённый популярный интерфейс для работы с Docker. Поскольку проект находится на ранней стадии разработки (первая и единственная бета-версия вышла 16 апреля 2020 г.), мы не стали оценивать его функции. Однако, возможно, он многих заинтересует: если это про вас — следите за развитием.
2. IcePanel
- Сайт;
- Лицензия: проприетарная;
- Вкратце: «Визуальный редактор Kubernetes».
Это молодое десктоп-приложение призвано визуализировать ресурсы Kubernetes в реальном времени и управлять ими с простым интерфейсом в духе drag & drop. Из объектов в настоящий момент поддерживаются Pod, Service, Deployment, StatefulSet, PersistentVolume, PersistentVolumeClaim, ConfigMap и Secret. В скором времени обещают добавить поддержку Helm. Главные недостатки — закрытость кода (ожидается его открытие «в каком-то виде») и отсутствие поддержки Linux (пока доступны только версии для Windows и macOS, хотя это тоже скорее всего лишь вопрос времени).
3. k9s
- Сайт;
- Демонстрация;
- Репозиторий (~7700 звёзд GitHub);
- Лицензия: Apache 2.0;
- Вкратце: «Консольный интерфейс для Kubernetes, позволяющий стильно управлять кластером».
Утилита оказалась лишь в бонусной части обзора по той причине, что предлагает консольный GUI. Однако авторы буквально выжали максимум из терминала, предлагая не только удобный интерфейс, но и 6 предопределённых тем оформления, и развитую систему клавиатурных сочетаний, и алиасов для команд. Их основательный подход не ограничился внешним видом: возможности k9s приятно впечатляют: управление ресурсами, отображение состояния кластера, вывод ресурсов в иерархическом представлении с зависимостями, просмотр логов, поддержка RBAC, расширение возможностей через плагины… Всё это пришлось по нраву широкому K8s-сообществу: количество GitHub-звёзд проекта практически не уступает официальному Kubernetes Dashboard!
4. Панели управления приложениями
И в завершении обзора — отдельная мини-категория. В неё попали два веб-интерфейса, предназначенные не для комплексного управления Kubernetes-кластерами, а для управления тем, что в них разворачивается.
Как известно, одним из самых зрелых и распространённых средств для деплоя комплексных приложений в Kubernetes является Helm. За период его существования накопилось множество пакетов (Helm charts) для простого развёртывания многих популярных приложений. Поэтому вполне логично и появление соответствующих визуальных средств, позволяющих управлять жизненным циклом чартов.
4.1. Monocular
- Репозиторий (1300+ звёзд GitHub);
- Лицензия: Apache 2.0;
- Вкратце: «Веб-приложение для поиска и обнаружения Helm-чартов во множестве репозиториев. Служит основой для проекта Helm hub».
Эта разработка от авторов Helm устанавливается в Kubernetes и работает в пределах одного кластера, выполняя поставленную задачу. Однако в настоящее время проект не почти не развивается. Его основное предназначение — поддержка существования Helm Hub. Для других нужд авторы рекомендуют Kubeapps (см. дальше) или Red Hat Automation Broker (часть OpenShift, но уже тоже не развивается).
4.2. Kubeapps
Продукт от Bitnami, который тоже устанавливается в кластер Kubernetes, но отличается от Monocular изначальным фокусом на работу с приватными репозиториями.
Ключевые функции и особенности Kubeapps:
- Просмотр и установка Helm chart«ов из репозиториев.
- Проверка, обновление и удаление приложений на базе Helm, установленных в кластере.
- Поддержка работы с кастомными и частными репозиториями чартов (поддерживает ChartMuseum и JFrog Artifactory).
- Просмотр и работа с внешними сервисами — из Service Catalog и Service Brokers.
- Публикация установленных приложений при помощи механизма Service Catalog Bindings.
- Поддержка аутентификации и разделения прав при помощи RBAC.
Завершая «бонусную» часть, стоит упомянуть о Kubernetes-дистрибутивы (например, известный всем OpenShift или куда менее популярный Kubesphere). Графический интерфейс в них может быть очень продвинутым, однако идёт как часть интегрированного стека большой системы. Поэтому рассматривать такие GUI-реализации в отдельности от самих дистрибутивов мы не стали.
Итоговая таблица
Ниже приведена сводная таблица, в которой мы постарались свести и агрегировать основные возможности существующих визуальных интерфейсов для облегчения сравнения:
(Онлайн-версия таблицы доступна в Google Docs.)
Заключение
Графические интерфейсы для Kubernetes — довольно специфичная и молодая ниша. Однако она развиваюется весьма активно: уже можно найти как достаточно зрелые решения, так и совсем молодые, которым еще есть куда расти. Они ориентируются на разные варианты применения, предлагая функции и внешний вид практически на любой вкус. Надеемся, что этот обзор поможет подобрать инструмент, наилучшим образом покрывающий текущие потребности.
P.S.
Читайте также в нашем блоге: