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

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

Для повноцінної роботи з системою важливо знання утиліт командного рядка: у випадку з Kubernetes це kubectl. З іншого боку, добре спроєктовані, продумані графічні інтерфейси можуть виконувати більшу частину звичайних завдань і відкрити додаткові можливості при експлуатації систем.

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

  • підтримка розмежування прав користувачів (RBAC);
  • візуалізація стану простору імен і стандартних примітивів Kubernetes (Deployment, StatefulSet, Service, Cronjob, Job, Ingress, ConfigMap, Secret, PVC);
  • отримання доступу до командного рядку всередині pod'a;
  • перегляд логів pod'ів;
  • перегляд стану pod'ів (describe status);
  • видалення pod'ів.

Огляд ми почнемо з класичного Kubernetes Dashboard. Оскільки світ не стоїть на місці (а значить — у Kubernetes з'являються все нові GUI), розповімо і про його актуальних альтернативи, узагальнивши все в порівняльній таблиці в кінці статті.

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. Lens

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

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

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

5. Kubewise

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

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

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

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

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

Бонус

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

  • Сайт;
  • Демонстрація;
  • Репозиторій (~7700 зірок GitHub);
  • Ліцензія: Apache 2.0;
  • Коротко: «Консольний інтерфейс для Kubernetes, що дозволяє стильно управляти кластером».

Огляд графічних інтерфейсів для KubernetesУтиліта виявилася лише в бонусній частини огляду з тієї причини, що пропонує консольний GUI. Однак автори буквально вичавили максимум з терміналу, пропонуючи не тільки зручний інтерфейс, але і розвинену систему клавіатурних сполучень, і аліасів для команд. Їх ґрунтовний підхід не обмежився зовнішнім виглядом: можливості k9s приємно вражають: управління ресурсами, відображення стану кластера, висновок ресурсів в ієрархічному представленні з залежностями, перегляд логів, підтримка RBAC, розширення можливостей через плагіни... Все це припало до вподоби широкому K8s-спільноти: кількість GitHub-зірок проекту практично не поступається офіційному Kubernetes Dashboard!

4. Панелі управління додатками

І на завершення огляду — окрема міні-категорія. До неї потрапили два веб-інтерфейси, призначені не для комплексного управління Kubernetes-кластерами, а для управління тим, що в них розгортається.

Як відомо, одним з найбільш зрілих і поширених засобів для деплоя комплексних програм в Kubernetes є Helm. За період його існування назбиралося безліч пакетів (Helm charts) для простого розгортання багатьох популярних програм. Тому цілком логічно і поява відповідних візуальних засобів, що дозволяють управляти життєвим циклом чартів.

4.1. Monocular

  • Репозиторій (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-дистрибутиви (наприклад, відомий всім OpenShift або куди менш популярний Kubesphere). Графічний інтерфейс у них може бути дуже просунутим, проте йде як частина інтегрованого стека великої системи. Тому розглядати такі GUI-реалізації окремо від самих дистрибутивів ми не стали.

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

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

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

Висновок

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

Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Війти / Зареєструватися