
Для повноцінної роботи з системою важливе знання утиліт командного рядка: у випадку з 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. об'єктив
- ;
- ;
- (~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 - спеціальний Інформаційна панель проекту, що відображає звичні дані (кількість та статуси 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. Монокуляр
- (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
