
За пълноценното функциониране на системата е важно да знаете комадните инструменти: в случая с Kubernetes това е kubectl. От друга страна, добре проектираните графични интерфейси могат да изпълняват по-голямата част от обикновените задачи и да откриват допълнителни възможности при работа със системите.по-Миналата година публикувахме превод на малък преглед на уеб интерфейса за Kubernetes, свързан с анонса на уеб интерфейса.
Автор на тази статия и самия инструмент е Henning Jacobs от компания Zalando, който позиционира новия продукт като "kubectl за уеба". Той искаше да създаде инструмент с удобни възможности за взаимодействие в контекста на техническа поддръжка (например, бързо показване на проблем с уеб връзка) и за реакция на инциденти, търсене на проблеми в множество клъстери едновременно. Неговото творение продължава да се развива и в момента (главно от самия автора). поддържане на разграничаване на правата на потребителите (RBAC); визуализация на състоянието на пространства имена и стандартни примитиви на Kubernetes (Deployment, StatefulSet, Service, Cronjob, Job, Ingress, ConfigMap, Secret, PVC);
достъп до командния ред вътре в pod-а;
- преглед на логовете на pod-овете;
- преглед на състоянието на pod-овете (
- describe status
- изтриване на pod-ове.
- Други функции, като преглед на консумираните ресурси (в разрез на pod-ове/контролери/пространства имена), създаване/редактиране на K8s примитиви, не са актуални в рамките на нашия работен поток.
Прегледът ще започне с класическия Kubernetes Dashboard, приеман за стандарт от нас. Тъй като светът не стои на място (а значи – в Kubernetes се появяват все нови GUI), ще разкажем и за неговите актуални алтернативи, обобщавайки всичко в сравнителна таблица в края на статията.); - : В прегледа няма да се повтаряме с решенията, които вече са разгледани в
, обаче – за пълнота на картината – съответните опции от нея (K8Dash, Octant, Kubernetes Web View) са включени във финалната таблица.
1. Kubernetes Dashboard
NBСтраница на документацията (8000+ звезди в GitHub);
Лицензия: Apache 2.0;
- ;
- (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 000 pod).
Основни особености/възможности на Lens:
- Автономно приложение, което не изисква инсталиране на каквото и да било вътре в клъстера (по-скоро, за получаване на всички метрики ще е необходим Prometheus, но за това може да се използва и вече съществуваща инсталация). Основната инсталация се извършва на персонален компютър с Linux, macOS или Windows.
- Управление на множество клъстери (поддържат се стотици клъстери).
- Визуализация на състоянието на клъстера в реално време.
- Графики за използване на ресурсите и тенденции с история, основана на вградения Prometheus.
- Достъп до командния ред на контейнерите и на възлите на клъстера.
- Пълна поддръжка на Kubernetes RBAC.
Актуална версия — от 16 юни 2020 г. Първоначалната версия беше създадена в компанията Kontena, а в днешно време цялата интелектуална собственост е прехвърлена в специална организация , наречена „обединение на cloud native-ентусиасти и технолози“, което отговаря за „запазването и достъпността на Open Source софтуер и продукти на Kontena“.
Lens е вторият най-популярен проект в GitHub от категорията GUI за Kubernetes, „изоставащ“ само след самия Kubernetes 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
- ;
- Лицензия: проприетарна (ще стане с отворен код);
- Накратко: «Прост клиент за Kubernetes на множество платформи».

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

Въпреки че този уеб интерфейс е част от дистрибуцията на OpenShift (там той се инсталира чрез ), авторите възможността той да бъде инсталиран/използван и в обикновени (vanilla) инсталации на Kubernetes.
Конзолата OpenShift се развива от дълго време и следователно е включила множество функции. Нека споменем основните от тях:
- Разделен подход към интерфейса – две «перспективи» на наличните възможности в Конзолата: за администратори и за разработчици. Режимът 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 чартове от репозиториите.
- Проверка, обновление и изтриване на приложения на база Helm, инсталирани в клъстера.
- Поддръжка на работа с персонализирани и частни хранилища на чартове (поддържа ChartMuseum и JFrog Artifactory).
- Преглед и работа с външни услуги — от Service Catalog и Service Brokers.
- Публикуване на инсталирани приложения чрез механизма Service Catalog Bindings.
- Поддръжка на автентикация и разделяне на права чрез RBAC.
Обобщаваща таблица
По-долу е предоставена обобщаваща таблица, в която сме се опитали да обобщим и агрегираме основните възможности на съществуващите визуални интерфейси за улесняване на сравнението:
(Онлайн версия на таблицата .)
Заключение
Графичните интерфейси за Kubernetes представляват доста специфична и млада ниша. Въпреки това, тя се развива много активно: вече могат да се намерят както достатъчно зрели решения, така и съвсем нови, които все още имат какво да покрият. Те са насочени към различни варианти на приложение, предлагайки функции и външен вид почти на всеки вкус. Надяваме се, че този преглед ще помогне да се подбере инструмент, който най-добре покрива текущите нужди.
P.S.
Благодарим ви за предоставените данни за OpenShift Console за таблицата за сравнение!
Прочетете също в нашия блог:
- «»;
- «»;
- «»;
- «».
Източник: habr.com
