Огляд графічних інтерфейсів для Kubernetes

Огляд графічних інтерфейсів для 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 розглядають в офіційній документації. (хоч і не розгортається за замовчуванням). Вона призначена для потреб повсякденної експлуатації та налагодження додатків у кластері. Ми її використовуємо як повноцінний легковажний візуальний засіб, що дозволяє надати розробникам необхідний і достатній доступ до кластера. Її можливості покривають усі їхні потреби, що виникають у процесі використання кластера цієї статті ми демонстрували деякі фічі панелі). Як легко здогадатися, це означає, що вона відповідає всім нашим вимогам, переліченим вище.

Серед основних можливостей 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. об'єктив

Огляд графічних інтерфейсів для Kubernetes

Проект позиціонується як повноцінне інтегроване середовище розробки (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

Огляд графічних інтерфейсів для Kubernetes

Це пропрієтарна програма, яка встановлюється на персональний комп'ютер (підтримуються Linux, MacOS, Windows). Його автори обіцяють повну заміну утиліти командного рядка, а разом з ним відсутність необхідності запам'ятовувати команди і навіть десятикратне збільшення швидкості роботи.

Однією з цікавих особливостей інструменту є вбудована підтримка Helm-Чартів, а одним із недоліків - відсутність метрик продуктивності додатків.

Головні фічі Kubernetic:

  • Зручне відображення стану кластеру. Один екран для перегляду всіх пов'язаних об'єктів кластера та їх залежностей; червоний/зелений стан готовності для всіх об'єктів; режим перегляду стану кластера із оновленням статусу у реальному часі.
  • Кнопки швидкої дії для видалення та масштабування програми.
  • Підтримка мультикластерної роботи.
  • Проста робота із просторами імен.
  • Підтримка Helm-чартів та репозиторіїв Helm (у тому числі приватних). Встановлення та керування чартами у веб-інтерфейсі.

Актуальна вартість продукту – разовий платіж у розмірі 30 євро за його використання однією людиною для будь-якої кількості просторів імен та кластерів.

4. Kubevious

  • Сайт;
  • презентація;
  • Репозиторій (~500 зірок GitHub);
  • Ліцензія: Apache 2.0
  • Коротко: «Kubevious робить кластери Kubernetes, конфігурацію додатків та перегляд їхнього стану безпечним та простим для розуміння».

Огляд графічних інтерфейсів для Kubernetes

Ідея проекту у створенні інструмента, призначеного для аналізу та налагодження конфігурацій додатків, розгорнутих у кластері. Автори зосередилися в першу чергу на реалізації цих фіч, залишивши загальніші речі на потім.

Основні особливості та функції Kubevious:

  • Візуалізація кластера способом, орієнтованим на додатки: взаємозалежні об'єкти в інтерфейсі групуються, вишиковуючи в ієрархію.
  • Наочне відображення залежностей у конфігураціях та каскадних наслідках їх змін.
  • Відображення помилок конфігурування кластера: неправильне використання міток, пропущені порти тощо. (До речі, якщо вам цікава ця фіча, зверніть увагу на Полярна зірка, Про який ми вже писали.)
  • На додаток до попереднього пункту — доступне виявлення потенційно небезпечних контейнерів, тобто. мають надто великі привілеї (атрибути hostPID, hostNetwork, hostIPC, монтування docker.sock і тому подібне).
  • Просунута система пошуку за кластером (не лише за назвами об'єктів, а й за їх властивостями).
  • Інструменти для планування потужностей та оптимізації ресурсів.
  • Вбудована «машина часу» (можливість бачити зміни зміни об'єктів, що відбулися раніше).
  • Управління RBAC за допомогою зведеної взаємопов'язаної таблиці з Roles, RoleBindings, ServiceAccounts.
  • Працює лише з одним кластером.

У проекту зовсім коротка історія (перший реліз відбувся 11 лютого 2020 р.) і начебто намітився період чи то стабілізації, чи то уповільнення розвитку. Якщо попередні версії випускалися часто, останній реліз (v0.5 від 15 квітня 2020 р.) відстав від початкового темпу розробки. Напевно, це пов'язано з невеликою кількістю контриб'юторів: в історії їх репозиторія всього 4, а вся фактична робота ведеться однією людиною.

5. Kubewise

  • Сторінка проекту;
  • Ліцензія: пропрієтарна (стане Open Source);
  • Коротко: "Простий мультиплатформний клієнт для Kubernetes".

Огляд графічних інтерфейсів для Kubernetes

Новий продукт від компанії VMware, який спочатку був створений у рамках внутрішнього хакатону (у червні 2019 року). Встановлюється на персональний комп'ютер, працює на базі електрон (підтримуються Linux, macOS та Windows) і вимагає kubectl не нижче від v1.14.0.

Основні можливості Kubewise:

  • Взаємодія в інтерфейсі з найчастіше використовуваними сутностями Kubernetes: вузлами, просторами імен тощо.
  • Підтримка декількох файлів kubeconfig для різних кластерів.
  • Термінал з можливістю встановлення змінного оточення KUBECONFIG.
  • Генерація кастомних файлів kubeconfig для заданого простору імен.
  • Розширені можливості безпеки (RBAC, паролі, Service Accounts).

Поки що у проекту лише один реліз — версія 1.1.0 від 26 листопада 2019 року. Причому автори планували одразу випустити його як Open Source, проте через внутрішні проблеми (не пов'язані з технічними питаннями) не змогли цього зробити. Станом на травень 2020 року, автори працюють над наступним релізом і одночасно з ним мають ініціювати процес відкриття коду.

6. OpenShift Console

Огляд графічних інтерфейсів для Kubernetes

Незважаючи на те, що цей веб-інтерфейс є частиною дистрибутива OpenShift (там він ставиться за допомогою спеціального оператора), автори передбачили можливість його встановлення/використання та у звичайних (vanilla) інсталяціях Kubernetes.

OpenShift Console розвивається вже довгий час, тому увібрав у себе безліч функцій. Згадаємо основні з них:

  • Підхід до інтерфейсу, що розділяється, — дві «перспективи» доступних у Console можливостей: для адміністраторів і для розробників. Режим Developer perspective групує об'єкти у більш зрозумілому розробникам вигляді (за додатками) і орієнтує інтерфейс рішення таких типових завдань, як деплой додатків, відстеження статусу складання/деплою і навіть редагування коду через Eclipse Che.
  • Управління робочими навантаженнями, мережею, сховищами, правами доступу.
  • Логічне поділ для робочих навантажень на проекти та програми. В одному з останніх релізів - v4.3 - з'явився спеціальний Інформаційна панель проекту, що відображає звичні дані (кількість та статуси deployment'ів, pod'ів тощо; споживання ресурсів та інші метрики) у зрізі проектів.
  • Відображення стану кластера, що відбулися в ньому змін (подій), що оновлюється в реальному часі; Перегляд логів.
  • Перегляд даних моніторингу, заснованого на Prometheus, Alertmanager та Grafana.
  • Управління операторами, представленими в OperatorHub.
  • Управління збірками, які виконуються через Docker (із зазначеного репозиторію з Dockerfile), S2I чи довільні зовнішні утиліти.

NB: Ми не стали додавати у порівняння Kubernetes-дистрибутиви (наприклад, куди менш відомий Kubesphere): незважаючи на те, що графічний інтерфейс у них може бути дуже просунутим, зазвичай йде як частина інтегрованого стека великої системи. Однак якщо ви вважаєте, що якихось рішень, що повноцінно функціонують і у vanilla-інсталяція K8s, не вистачає — дайте нам знати в коментарях.

Бонус

1. Portainer on Kubernetes у бета-версії

Проект від команди Portainer, яка розробила однойменний популярний інтерфейс для роботи з Docker. Оскільки проект знаходиться на ранній стадії розробки (перша та єдина бета-версія вийшла 16 квітня 2020 р.), ми не стали оцінювати його функції. Однак, можливо, він багатьох зацікавить: якщо це про вас, стежте за розвитком.

2. IcePanel

  • Сайт;
  • Ліцензія: пропрієтарна;
  • Коротко: "Візуальний редактор Kubernetes".

Огляд графічних інтерфейсів для Kubernetes

Цей молодий десктоп-додаток покликаний візуалізувати ресурси Kubernetes у реальному часі та керувати ними з простим інтерфейсом у дусі drag&drop. З об'єктів зараз підтримуються Pod, Service, Deployment, StatefulSet, PersistentVolume, PersistentVolumeClaim, ConfigMap та Secret. Незабаром обіцяють додати підтримку Helm. Головні недоліки - закритість коду (очікується його відкриття «у якомусь вигляді») і відсутність підтримки Linux (поки доступні тільки версії для Windows і macOS, хоча це теж швидше за все лише питання часу).

3. k9s

Огляд графічних інтерфейсів для 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».

Огляд графічних інтерфейсів для Kubernetes

Ця розробка від авторів Helm встановлюється в Kubernetes та працює в межах одного кластера, виконуючи поставлене завдання. Проте нині проект майже не розвивається. Його основне призначення – підтримка існування Helm Hub. Для інших потреб автори рекомендують Kubeapps (див. далі) або Red Hat Automation Broker (частина OpenShift, але вже не розвивається).

4.2. Kubeapps

Огляд графічних інтерфейсів для Kubernetes

Продукт від Bitnami, який також встановлюється в кластер Kubernetes, але відрізняється від Monocular фокусом на роботу з приватними репозиторіями.

Ключові функції та особливості Kubeapps:

  • Перегляд та встановлення Helm chart'ів з репозиторіїв.
  • Перевірка, оновлення та видалення програм на базі Helm, встановлених у кластері.
  • Підтримка роботи з кастомними та приватними репозиторіями чартів (підтримує ChartMuseum та JFrog Artifactory).
  • Перегляд та робота із зовнішніми сервісами – з Service Catalog та Service Brokers.
  • Публікація встановлених програм за допомогою механізму Service Catalog Bindings.
  • Підтримка аутентифікації та поділу прав за допомогою RBAC.

Підсумкова таблиця

Нижче наведено зведену таблицю, в якій ми постаралися звести та агрегувати основні можливості існуючих візуальних інтерфейсів для полегшення порівняння:

Огляд графічних інтерфейсів для Kubernetes
(Онлайн-версія таблиці доступна в Google Docs.)

Висновок

Графічні інтерфейси для Kubernetes – досить специфічна та молода ніша. Однак вона розвивається дуже активно: вже можна знайти як досить зрілі рішення, так і зовсім молоді, яким ще є куди зростати. Вони орієнтуються на різні варіанти застосування, пропонуючи функції та зовнішній вигляд практично на будь-який смак. Сподіваємося, що цей огляд допоможе підібрати інструмент, що найкраще покриває поточні потреби.

PS

Дякуємо kvaps за дані щодо OpenShift Console для таблиці порівняння!

Читайте також у нашому блозі:

Джерело: habr.com

Додати коментар або відгук