
Для полноценной работы с системой важно знание утилит командной строки: в случае с Kubernetes это kubectl. С другой стороны, хорошо спроектированные, продуманные графические интерфейсы могут выполнять большую часть обычных задач и открыть дополнительные возможности при эксплуатации систем.
В прошлом году мы публиковали перевод для Kubernetes, приуроченного к анонсу веб-интерфейса . Автор той статьи и самой утилиты — 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: последняя версия панели — от 22 мая 2020 г. — протестирована на совместимость с Kubernetes 1.18.
2. Lens
- ;
- ;
- (~4800 звёзд GitHub);
- Лицензия: MIT;
- Вкратце: «Kubernetes IDE».

Проект позиционируется как полноценная интегрированная среда разработки (IDE) для Kubernetes. Причем она оптимизирована для работы со множеством кластеров и большим количеством запущенных в них pod’ов (протестировано на 25 тысячах pod’ов).
Основные особенности/возможности Lens:
- Автономное приложение, не требующее установки чего-либо внутри кластера (точнее, для получения всех метрик потребуется Prometheus, но для этого можно использовать и уже существующую инсталляцию). «Основная» же инсталляция производится на персональный компьютер под управлением Linux, macOS или Windows.
- Мультикластерное управление (поддерживаются сотни кластеров).
- Визуализация состояния кластера в реальном времени.
- Графики использования ресурсов и тенденции с историей на основе встроенного Prometheus.
- Доступ к командной строке контейнеров и на узлах кластера.
- Полная поддержка Kubernetes RBAC.
Актуальный релиз — от 16 июня 2020 г. Изначальная версия была создана в компании Kontena, а на сегодняшний день вся интеллектуальная собственность передана в специальную организацию , называемую «объединением cloud native-гиков и технологов», что отвечают за «сохранение и доступность Open Source-ПО и продуктов Kontena».
Lens — второй по популярности проект на GitHub из категории GUI для Kubernetes, «проигрывающий» только собственно Kubernets Dashboard. Все остальные Open Source-решения не из категории CLI* значительно уступают в популярности.
* См. про K9s в бонусной части обзора.
3. Kubernetic
- ;
- ;
- (200+ звёзд GitHub);
- Лицензия: проприетарная;
- Вкратце: «Управление кластером, сделанное просто».

Это проприетарное приложение, которое устанавливается на персональный компьютер (поддерживаются Linux, macOS, Windows). Его авторы обещают полную замену утилиты командной строки, а вместе с ним — отсутствие необходимости запоминать команды и даже десятикратное увеличение скорости работы.
Одной из интересных особенностей инструмента является встроенная поддержка Helm-чартов, а одним из недостатков — отсутствие метрик производительности приложений.
Главные фичи Kubernetic:
- Удобное отображение состояния кластера. Один экран для просмотра всех связанных объектов кластера и их зависимостей; красное/зеленое состояние готовности для всех объектов; режим просмотра состояния кластера с обновлением статуса в реальном времени.
- Кнопки быстрого действия для удаления и масштабирования приложения.
- Поддержка мультикластерной работы.
- Простая работа с пространствами имен.
- Поддержка Helm-чартов и репозиториев Helm (в том числе, приватных). Установка и управление чартами в веб-интерфейсе.
Актуальная стоимость продукта — разовый платеж в размере 30 евро за его использование одним человеком для любого числа пространств имён и кластеров.
4. Kubevious
- ;
- ;
- (~500 звёзд GitHub);
- Лиценз: Apache 2.0
- Вкратце: «Kubevious делает кластеры Kubernetes, конфигурацию приложений и просмотр их состояния безопасным и простым для понимания».

Идея проекта в создании инструмента, предназначенного для анализа и отладки конфигураций приложений, развёрнутых в кластере. Авторы сосредоточились в первую очередь на реализации этих фич, оставив более общие вещи на потом.
Основные особенности и функции Kubevious:
- Визуализация кластера способом, ориентированным на приложения: взаимосвязанные объекты в интерфейсе группируются, выстраиваясь в иерархию.
- Наглядное отображение зависимостей в конфигурациях и каскадных последствий их изменений.
- Отображение ошибок конфигурирования кластера: неправильное использование меток, пропущенные порты и т.п. (К слову, если вам интересна эта фича, обратите внимание на , о котором мы .)
- В дополнение к предыдущему пункту — доступно обнаружение потенциально опасных контейнеров, т.е. имеющих слишком большие привилегии (атрибуты
hostPID,hostNetwork,hostIPC, монтированиеdocker.sockи тому подобное). - Продвинутая система поиска по кластеру (не только по названиям объектов, но и по их свойствам).
- Инструменты для планирования мощностей и оптимизации ресурсов.
- Встроенная «машина времени» (возможность видеть произошедшие ранее изменения конфигурации объектов).
- Управление RBAC при помощи сводной взаимосвязанной таблицы из Roles, RoleBindings, ServiceAccounts.
- Работает только с одним кластером.
У проекта совсем короткая история (первый релиз состоялся 11 февраля 2020 г.) и как будто бы наметился период то ли стабилизации, то ли замедления в развитии. Если предыдущие версии выпускались часто, то последний релиз ( от 15 апреля 2020 г.) отстал от начального темпа разработки. Наверное, это связано с небольшим числом контрибьюторов: в истории репозитория их всего 4, а вся фактическая работа ведётся одним человеком.
5. Kubewise
- ;
- Лицензия: проприетарная (станет Open Source);
- Вкратце: «Простой мультиплатформенный клиент для Kubernetes».

Новый продукт от компании VMware, изначально созданный в рамках внутреннего хакатона (в июне 2019 года). Устанавливается на персональный компьютер, работает на базе (поддерживаются Linux, macOS и Windows) и требует kubectl не ниже v1.14.0.
Основные возможности Kubewise:
- Взаимодействие в интерфейсе с самыми часто используемыми сущностями Kubernetes: узлами, пространствами имен и т.п.
- Поддержка нескольких файлов kubeconfig для разных кластеров.
- Терминал с возможностью установки переменной окружения
KUBECONFIG. - Генерация кастомных файлов kubeconfig для заданного пространства имен.
- Расширенные возможности безопасности (RBAC, пароли, service accounts).
Пока что у проекта всего один релиз — версия от 26 ноября 2019 года. Причем авторы планировали сразу выпустить его как Open Source, однако из-за внутренних проблем (не связанных с техническими вопросами) не смогли этого сделать. По состоянию на май 2020, авторы работают над следующим релизом и одновременно с ним должны инициировать процесс открытия кода.
6. OpenShift Console
- ;
- (~150 звёзд GitHub);
- Лицензия: Apache 2.0;
- Вкратце: «UI для кластеров OpenShift».

Несмотря на то, что этот веб-интерфейс является частью дистрибутива OpenShift (там он ставится с помощью ), авторы возможность его установки/использования и в обычных (vanilla) инсталляциях Kubernetes.
OpenShift Console развивается уже долгое время, поэтому вобрал в себя множество функций. Упомянем основные из них:
- Разделяемый подход к интерфейсу — две «перспективы» доступных в Console возможностей: для администраторов и для разработчиков. Режим Developer perspective группирует объекты в более понятном разработчикам виде (по приложениям) и ориентирует интерфейс на решение таких типовых задач, как деплой приложений, отслеживание статуса сборки/деплоя и даже редактирование кода через Eclipse Che.
- Управление рабочими нагрузками, сетью, хранилищами, правами доступа.
- Логическое разделение для рабочих нагрузок на проекты и приложения. В одном из последних релизов — v4.3 — специальный Project dashboard, отображающий привычные данные (количество и статусы deployment’ов, pod’ов и т.п.; потребление ресурсов и прочие метрики) в срезе проектов.
- Обновляемое в реальном времени отображение состояния кластера, произошедших в нем изменений (событий); просмотр логов.
- Просмотр данных мониторинга, основанного на Prometheus, Alertmanager и Grafana.
- Управление операторами, представленными в .
- Управление сборками, которые выполняются через Docker (из указанного репозитория с Dockerfile), или произвольные внешние утилиты.
NB: Мы не стали добавлять в сравнение другие Kubernetes-дистрибутивы (например, куда менее известный ): несмотря на то, что графический интерфейс в них может быть очень продвинутым, обычно идёт как часть интегрированного стека большой системы. Однако если вы считаете, что каких-то решений, полноценно функционирующих и в vanilla-инсталляция K8s, не хватает — дайте нам знать в комментариях.
Бонус
1. Portainer on Kubernetes в бета-версии
- ;
- (~100 звёзд GitHub);
- Лицензия: Zlib(?) (такая у родительского проекта).
Проект от команды 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
- ;
- ;
- (~2100 звёзд GitHub);
- Лиценз: Apache 2.0
- Вкратце: «Ваша панель приложений для Kubernetes».

Продукт от Bitnami, который тоже устанавливается в кластер Kubernetes, но отличается от Monocular изначальным фокусом на работу с приватными репозиториями.
Ключевые функции и особенности Kubeapps:
- Просмотр и установка Helm chart’ов из репозиториев.
- Проверка, обновление и удаление приложений на базе Helm, установленных в кластере.
- Поддержка работы с кастомными и частными репозиториями чартов (поддерживает ChartMuseum и JFrog Artifactory).
- Просмотр и работа с внешними сервисами — из Service Catalog и Service Brokers.
- Публикация установленных приложений при помощи механизма Service Catalog Bindings.
- Поддержка аутентификации и разделения прав при помощи RBAC.
Итоговая таблица
Ниже приведена сводная таблица, в которой мы постарались свести и агрегировать основные возможности существующих визуальных интерфейсов для облегчения сравнения:
(Онлайн-версия таблицы .)
Заключение
Графические интерфейсы для Kubernetes — довольно специфичная и молодая ниша. Однако она развиваюется весьма активно: уже можно найти как достаточно зрелые решения, так и совсем молодые, которым еще есть куда расти. Они ориентируются на разные варианты применения, предлагая функции и внешний вид практически на любой вкус. Надеемся, что этот обзор поможет подобрать инструмент, наилучшим образом покрывающий текущие потребности.
P.S.
Благодарим за данные по OpenShift Console для таблицы сравнения!
Прочетете също в нашия блог:
- «»;
- «»;
- «»;
- «».
Източник: habr.com
