Для повноцінної роботи з системою важливо знання утиліт командного рядка: у випадку з 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 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
- Сайт;
- Презентація;
- Репозиторій (~4800 зірок GitHub);
- Ліцензія: MIT;
- Коротко: «Kubernetes IDE».
Проєкт позиціонується як повноцінне інтегроване середовище розробки (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
- Сайт;
- Демонстрація;
- Репозиторій (тільки документація) (200+ зірок GitHub);
- Ліцензія: пропрієтарна;
- Коротко: «Управління кластером, зроблене просто».
Це пропрієтарне програмне забезпечення, яке встановлюється на персональний комп'ютер (підтримуються Linux, macOS, Windows). Його автори обіцяють повну заміну утиліти командного рядка, а разом з ним — відсутність необхідності запам'ятовувати команди і навіть десятикратне збільшення швидкості роботи.
Однією з цікавих особливостей інструменту є вбудована підтримка Helm-чартів, а одним з недоліків — відсутність показників продуктивності додатків.
Головні фічі Kubernetic:
- Зручне відображення стану кластера. Один екран для перегляду всіх пов'язаних об'єктів кластера та їх залежностей; червоне/зелене стан готовності для всіх об'єктів; режим перегляду стану кластера з оновленням статусу в реальному часі.
- Кнопки швидкої дії для видалення і масштабування програми.
- Підтримка мультикластерной роботи.
- Проста робота з просторами імен.
- Підтримка Helm-чартів і репозиторіїв Helm (у тому числі приватних). Установка і управління чартами у веб-інтерфейсі.
Актуальна вартість продукту — разовий платіж у розмірі 30 євро за використання однією людиною для будь-якого числа просторів імен і кластерів.
4. Kubevious
- Сайт;
- Презентація;
- Репозиторій (~500 зірок GitHub);
- Ліцензія: Apache 2.0
- Коротко: «Kubevious робить кластери Kubernetes, конфігурацію додатків і перегляд їх стану безпечним і простим для розуміння».
Ідея проекту у створенні інструменту, призначеного для аналізу та налагодження конфігурацій програм, розгорнутих в кластері. Автори зосередилися в першу чергу на реалізації цих функцій, залишивши більш загальні речі на потім.
Основні особливості та функції Kubevious:
- Візуалізація кластера способом, орієнтованим на додатки: взаємозалежні об'єкти в інтерфейсі групуються, шикуючись в ієрархію.
- Наочне відображення залежностей в конфігураціях і каскадних наслідків їх зміни.
- Відображення помилок конфігурування кластера: неправильне використання міток, пропущені порти і т. п. (До речі, якщо вам цікава ця фіча, зверніть увагу на Polaris
- На застосунок до попереднього пункту — доступно виявлення потенційно небезпечних контейнерів, тобто мають занадто великі привілеї (атрибути
hostPID
,hostNetwork
,hostIPC
, монтуванняdocker.sock
і тощо). - Просунута система пошуку по кластеру (не тільки за назвами об'єктів, але і за їх властивостями).
- Інструменти для планування потужностей та оптимізації ресурсів.
- Вбудована «машина часу» (можливість бачити зміни конфігурації об'єктів які відбулися раніше).
- Управління RBAC за допомогою зведеної взаємопов'язаної таблиці з Roles, RoleBindings, ServiceAccounts.
- Працює тільки з одним кластером.
У проєкту зовсім коротка історія (перший реліз відбувся 11 лютого 2020 р.) і ніби намітився період чи стабілізації, то уповільнення в розвитку. Якщо попередні версії випускалися часто, то останній реліз (v0.5 від 15 квітня 2020 р.) відстав від початкового темпу розробки. Напевно, це пов'язано з невеликим числом контриб'юторів: в історії репозиторію їх всього 4, а вся поточна робота ведеться однією людиною.
5. Kubewise
- Сторінка проекту;
- Ліцензія: пропрієтарна (стане Open Source);
- Коротко: «Простий мультиплатформовий клієнт для 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 в бета-версії
- Сайт;
- Репозиторій (~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. Однак автори буквально вичавили максимум з терміналу, пропонуючи не тільки зручний інтерфейс, але і розвинену систему клавіатурних сполучень, і аліасів для команд. Їх ґрунтовний підхід не обмежився зовнішнім виглядом: можливості 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 chart'ів з репозиторіїв.
- Перевірка, оновлення і видалення додатків на базі Helm, встановлених в кластері.
- Підтримка роботи з кастомними і приватними репозиторіями чартів (підтримує ChartMuseum і JFrog Artifactory).
- Перегляд і робота з зовнішніми сервісами — з Service Catalog і Service Brokers.
- Публікація встановлених додатків за допомогою механізму Service Catalog Bindings.
- Підтримка аутентифікації і розмежування прав за допомогою RBAC.
Завершуючи «бонусну» частина, варто згадати про Kubernetes-дистрибутиви (наприклад, відомий всім OpenShift або куди менш популярний Kubesphere). Графічний інтерфейс у них може бути дуже просунутим, проте йде як частина інтегрованого стека великої системи. Тому розглядати такі GUI-реалізації окремо від самих дистрибутивів ми не стали.
Підсумкова таблиця
Нижче наведена таблиця, в якій ми постаралися звести і агрегувати основні можливості існуючих візуальних інтерфейсів для полегшення порівняння:
Висновок
Графічні інтерфейси для Kubernetes — досить специфічна і молода ніша. Однак вона развиваюется досить активно: вже можна знайти як досить зрілі рішення, так і зовсім юні, яким ще є куди рости. Вони орієнтуються на різні варіанти застосування, пропонуючи функції і зовнішній вигляд практично на будь-який смак. Сподіваємося, що цей огляд допоможе підібрати інструмент, найкращим чином покриває поточні потреби.
Ще немає коментарів