- PVSM.RU - https://www.pvsm.ru -

Для полноценной работы с системой важно знание утилит командной строки: в случае с Kubernetes это kubectl. С другой стороны, хорошо спроектированные, продуманные графические интерфейсы могут выполнять большую часть обычных задач и открыть дополнительные возможности при эксплуатации систем.
В прошлом году мы публиковали перевод небольшого обзора web UI [1] для Kubernetes, приуроченного к анонсу веб-интерфейса Kubernetes Web View [2]. Автор той статьи и самой утилиты — Henning Jacobs из компании Zalando — как раз позиционировал новинку в качестве «kubectl для веба». Он хотел создать инструмент с удобными возможностями для взаимодействия в формате техподдержки (например, быстро показать проблему веб-ссылкой) и для реакции на инциденты, поиска проблем во многих кластерах одновременно. Его детище развивается и в настоящее время (в основном, силами самого автора).
Обслуживая множество Kubernetes-кластеров разных масштабов, мы тоже заинтересованы в возможности предоставлять клиентам инструмент визуальной работы. При выборе подходящего интерфейса ключевыми для нас были следующие возможности:
describe status);Другие функции, такие как просмотр потребляемых ресурсов (в разрезе pod’ов/контроллеров/пространств имён), создание/редактирование примитивов K8s, в рамках нашего рабочего процесса не актуальны.
Обзор мы начнем с классического Kubernetes Dashboard, принятого за стандарт у нас. Поскольку мир не стоит на месте (а значит — у Kubernetes появляются всё новые GUI), расскажем и о его актуальных альтернативах, обобщив всё в сравнительной таблице в конце статьи.
NB: В обзоре мы не будем повторяться с теми решениями, что уже рассматривались в прошлой статье [1], однако — для полноты картины — релевантные опции из неё (K8Dash, Octant, Kubernetes Web View) включены в финальную таблицу.

Это панель общего назначения, рассматриваемая авторами Kubernetes в официальной документации (хотя и не разворачиваемая [5] по умолчанию). Она предназначена для нужд повседневной эксплуатации и отладки приложений в кластере. У себя мы её используем как полноценное легковесное визуальное средство, позволяющее предоставить разработчикам необходимый и достаточный доступ к кластеру. Её возможности покрывают все их потребности, что возникают в процессе использования кластера (в этой статье [6] мы демонстрировали некоторые фичи панели). Как легко догадаться, это означает, что она удовлетворяет всем нашим требованиям, перечисленным выше.
Среди основных возможностей Kubernetes Dashboard:
Значимый недостаток (впрочем, не для нас)— нет поддержки мультикластерной работы. Проект активно развивается сообществом и поддерживает актуальные функции с выходом новых версий и спецификаций Kubernetes API: последняя версия панели — v2.0.1 [7] от 22 мая 2020 г. — протестирована на совместимость с Kubernetes 1.18.

Проект позиционируется как полноценная интегрированная среда разработки (IDE) для Kubernetes. Причем она оптимизирована для работы со множеством кластеров и большим количеством запущенных в них pod’ов (протестировано на 25 тысячах pod’ов).
Основные особенности/возможности Lens:
Актуальный релиз — 3.5.0 [11] от 16 июня 2020 г. Изначальная версия была создана в компании Kontena, а на сегодняшний день вся интеллектуальная собственность передана в специальную организацию Lakend Labs [12], называемую «объединением cloud native-гиков и технологов», что отвечают за «сохранение и доступность Open Source-ПО и продуктов Kontena».
Lens — второй по популярности проект на GitHub из категории GUI для Kubernetes, «проигрывающий» только собственно Kubernets Dashboard. Все остальные Open Source-решения не из категории CLI* значительно уступают в популярности.
* См. про K9s в бонусной части обзора.

Это проприетарное приложение, которое устанавливается на персональный компьютер (поддерживаются Linux, macOS, Windows). Его авторы обещают полную замену утилиты командной строки, а вместе с ним — отсутствие необходимости запоминать команды и даже десятикратное увеличение скорости работы.
Одной из интересных особенностей инструмента является встроенная поддержка Helm-чартов, а одним из недостатков — отсутствие метрик производительности приложений.
Главные фичи Kubernetic:
Актуальная стоимость продукта — разовый платеж в размере 30 евро за его использование одним человеком для любого числа пространств имён и кластеров.

Идея проекта в создании инструмента, предназначенного для анализа и отладки конфигураций приложений, развёрнутых в кластере. Авторы сосредоточились в первую очередь на реализации этих фич, оставив более общие вещи на потом.
Основные особенности и функции Kubevious:
hostPID, hostNetwork, hostIPC, монтирование docker.sock и тому подобное).У проекта совсем короткая история (первый релиз состоялся 11 февраля 2020 г.) и как будто бы наметился период то ли стабилизации, то ли замедления в развитии. Если предыдущие версии выпускались часто, то последний релиз (v0.5 [21] от 15 апреля 2020 г.) отстал от начального темпа разработки. Наверное, это связано с небольшим числом контрибьюторов: в истории репозитория их всего 4, а вся фактическая работа ведётся одним человеком.

Новый продукт от компании VMware, изначально созданный в рамках внутреннего хакатона (в июне 2019 года). Устанавливается на персональный компьютер, работает на базе Electron [23] (поддерживаются Linux, macOS и Windows) и требует kubectl не ниже v1.14.0.
Основные возможности Kubewise:
KUBECONFIG.Пока что у проекта всего один релиз — версия 1.1.0 [24] от 26 ноября 2019 года. Причем авторы планировали сразу выпустить его как Open Source, однако из-за внутренних проблем (не связанных с техническими вопросами) не смогли этого сделать. По состоянию на май 2020, авторы работают над следующим релизом и одновременно с ним должны инициировать процесс открытия кода.
Проект от команды Portainer, разработавшей одноимённый популярный интерфейс для работы с Docker. Поскольку проект находится на ранней стадии разработки (первая и единственная бета-версия вышла [27] 16 апреля 2020 г.), мы не стали оценивать его функции. Однако, возможно, он многих заинтересует: если это про вас — следите за развитием.

Это молодое десктоп-приложение призвано визуализировать ресурсы Kubernetes в реальном времени и управлять ими с простым интерфейсом в духе drag & drop. Из объектов в настоящий момент поддерживаются Pod, Service, Deployment, StatefulSet, PersistentVolume, PersistentVolumeClaim, ConfigMap и Secret. В скором времени обещают добавить поддержку Helm. Главные недостатки — закрытость кода (ожидается его открытие «в каком-то виде» [29]) и отсутствие поддержки Linux (пока доступны только версии для Windows и macOS, хотя это тоже скорее всего лишь вопрос времени).

Утилита оказалась лишь в бонусной части обзора по той причине, что предлагает консольный GUI. Однако авторы буквально выжали максимум из терминала, предлагая не только удобный интерфейс, но и 6 предопределённых тем оформления, и развитую систему клавиатурных сочетаний, и алиасов для команд. Их основательный подход не ограничился внешним видом: возможности k9s приятно впечатляют: управление ресурсами, отображение состояния кластера, вывод ресурсов в иерархическом представлении с зависимостями, просмотр логов, поддержка RBAC, расширение возможностей через плагины… Всё это пришлось по нраву широкому K8s-сообществу: количество GitHub-звёзд проекта практически не уступает официальному Kubernetes Dashboard!
И в завершении обзора — отдельная мини-категория. В неё попали два веб-интерфейса, предназначенные не для комплексного управления Kubernetes-кластерами, а для управления тем, что в них разворачивается.
Как известно, одним из самых зрелых и распространённых средств для деплоя комплексных приложений в Kubernetes является Helm. За период его существования накопилось множество пакетов (Helm charts) для простого развёртывания многих популярных приложений [33]. Поэтому вполне логично и появление соответствующих визуальных средств, позволяющих управлять жизненным циклом чартов.

Эта разработка от авторов Helm устанавливается в Kubernetes и работает в пределах одного кластера, выполняя поставленную задачу. Однако в настоящее время проект не почти не развивается. Его основное предназначение — поддержка существования Helm Hub. Для других нужд авторы рекомендуют Kubeapps (см. дальше) или Red Hat Automation Broker (часть OpenShift, но уже тоже не развивается).

Продукт от Bitnami, который тоже устанавливается в кластер Kubernetes, но отличается от Monocular изначальным фокусом на работу с приватными репозиториями.
Ключевые функции и особенности Kubeapps:
Завершая «бонусную» часть, стоит упомянуть о Kubernetes-дистрибутивах (например, известный всем OpenShift или куда менее популярный Kubesphere [38]). Графический интерфейс в них может быть очень продвинутым, однако идёт как часть интегрированного стека большой системы. Поэтому рассматривать такие GUI-реализации в отдельности от самих дистрибутивов мы не стали.
Ниже приведена сводная таблица, в которой мы постарались свести и агрегировать основные возможности существующих визуальных интерфейсов для облегчения сравнения:
[39]
(Онлайн-версия таблицы доступна в Google Docs [40].)
Графические интерфейсы для Kubernetes — довольно специфичная и молодая ниша. Однако она развиваюется весьма активно: уже можно найти как достаточно зрелые решения, так и совсем молодые, которым еще есть куда расти. Они ориентируются на разные варианты применения, предлагая функции и внешний вид практически на любой вкус. Надеемся, что этот обзор поможет подобрать инструмент, наилучшим образом покрывающий текущие потребности.
Читайте также в нашем блоге:
Автор: Oleg Voznesensky
Источник [42]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/sistemnoe-administrirovanie/354153
Ссылки в тексте:
[1] небольшого обзора web UI: https://habr.com/ru/company/flant/blog/468041/
[2] Kubernetes Web View: https://github.com/hjacobs/kube-web-view
[3] Страница документации: https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
[4] Репозиторий: https://github.com/kubernetes/dashboard
[5] не разворачиваемая: https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/#deploying-the-dashboard-ui
[6] этой статье: https://habr.com/ru/company/flant/blog/452988/
[7] v2.0.1: https://github.com/kubernetes/dashboard/releases/tag/v2.0.1
[8] Сайт: https://k8slens.dev/
[9] Презентация: https://www.youtube.com/watch?v=04v2ODsmtIs
[10] Репозиторий: https://github.com/lensapp/lens
[11] 3.5.0: https://github.com/lensapp/lens/releases/tag/v3.5.0
[12] Lakend Labs: https://lakendlabs.com/
[13] Сайт: https://kubernetic.com/
[14] Демонстрация: https://kubernetic.com/assets/images/deployment-nginx.png
[15] Репозиторий (только документация): https://github.com/harbur/kubernetic
[16] Сайт: https://kubevious.io/
[17] Презентация: https://www.youtube.com/watch?v=YVBjt-9ugTg
[18] Репозиторий: https://github.com/kubevious/kubevious
[19] Polaris: https://github.com/FairwindsOps/polaris
[20] уже писали: https://habr.com/ru/company/flant/blog/454706/
[21] v0.5: https://github.com/kubevious/kubevious/releases/tag/v0.5
[22] Страница проекта: https://flings.vmware.com/kubewise
[23] Electron: https://www.electronjs.org/
[24] 1.1.0: https://flings.vmware.com/kubewise#changelog
[25] Сайт: https://www.portainer.io/
[26] Репозиторий: https://github.com/portainer/portainer-k8s
[27] вышла: https://github.com/portainer/portainer-k8s/releases/tag/portainer-beta-1.0.0
[28] Сайт: https://icepanel.io/
[29] открытие «в каком-то виде»: https://www.reddit.com/r/kubernetes/comments/h88a64/visualize_and_edit_your_kubernetes_cluster_in/furytcx/
[30] Сайт: https://k9scli.io/
[31] Демонстрация: https://www.youtube.com/watch?v=k7zseUhaXeU
[32] Репозиторий: https://github.com/derailed/k9s
[33] многих популярных приложений: https://hub.helm.sh/charts
[34] Репозиторий: https://github.com/helm/monocular
[35] Сайт: https://kubeapps.com/
[36] Презентация: https://youtu.be/G1IGLW4oDF0
[37] Репозиторий: https://github.com/kubeapps/kubeapps
[38] Kubesphere: https://kubesphere.io/
[39] Image: https://habrastorage.org/webt/li/jz/wj/lijzwjlofko4obprvchfmi4soby.png
[40] доступна в Google Docs: https://docs.google.com/spreadsheets/d/1wEN6lvDqKy4MKCD_d-B5sIrGGLYp1suyI-vw8Yi7E0Q/edit#gid=0
[41] kubebox и другие консольные оболочки для Kubernetes: https://habr.com/ru/company/flant/blog/426985/
[42] Источник: https://habr.com/ru/post/506948/?utm_source=habrahabr&utm_medium=rss&utm_campaign=506948
Нажмите здесь для печати.