
Do pełnoprawnej pracy z systemem ważna jest znajomość narzędzi wiersza poleceń: w przypadku Kubernetesa jest to kubectl. Z drugiej strony dobrze zaprojektowane, przemyślane interfejsy graficzne mogą działaćоwiększość typowych zadań i otwierają dodatkowe możliwości obsługi systemów.
W zeszłym roku opublikowaliśmy tłumaczenie dla Kubernetes, zbiegło się w czasie z ogłoszeniem interfejsu sieciowego . Autor tego artykułu i samego narzędzia, Henning Jacobs z Zalando, właśnie umieścił nowy produkt jako „kubectl dla sieci”. Chciał stworzyć narzędzie z przyjaznymi dla użytkownika możliwościami interakcji w formie wsparcia technicznego (np. szybkie pokazanie problemu za pomocą linku internetowego) oraz reagowania na incydenty, wyszukiwania problemów w wielu klastrach jednocześnie. Jego potomstwo rozwija się obecnie (głównie dzięki staraniom samego autora).
Ponieważ obsługujemy wiele klastrów Kubernetes o różnej wielkości, jesteśmy również zainteresowani możliwością udostępnienia naszym klientom narzędzia wizualnego. Przy wyborze odpowiedniego interfejsu kluczowe były dla nas następujące cechy:
- obsługa różnicowania uprawnień użytkownika (RBAC);
- wizualizacja stanu przestrzeni nazw i standardowych prymitywów Kubernetes (Deployment, StatefulSet, Service, Cronjob, Job, Ingress, ConfigMap, Secret, PVC);
- uzyskanie dostępu do wiersza poleceń wewnątrz kapsuły;
- przeglądanie dzienników strąków;
- wyświetl stan podów (
describe status); - usuwanie strąków.
Inne funkcje, takie jak przeglądanie zużytych zasobów (w kontekście podów/kontrolerów/przestrzeni nazw), tworzenie/edycja prymitywów K8s, nie są istotne w naszym przepływie pracy.
Przegląd rozpoczniemy od klasycznego Kubernetes Dashboard, który jest naszym standardem. Ponieważ świat nie stoi w miejscu (co oznacza, że Kubernetes ma coraz więcej nowych GUI), porozmawiamy również o jego aktualnych alternatywach, podsumowując wszystko w tabeli porównawczej na końcu artykułu.
NB: W recenzji nie będziemy powtarzać tych rozwiązań, które zostały już rozważone , jednak dla kompletności odpowiednie opcje z niego (K8Dash, Octant, Kubernetes Web View) są uwzględnione w tabeli końcowej.
1. Pulpit nawigacyjny Kubernetes
- ;
- (ponad 8000 gwiazdek GitHub);
- Licencja: Apache 2.0;
- W skrócie: „Uniwersalny interfejs webowy dla klastrów Kubernetes. Umożliwia użytkownikom zarządzanie i rozwiązywanie problemów z aplikacjami działającymi w klastrze, a także zarządzanie samym klastrem”.

Jest to panel ogólnego przeznaczenia opisany przez autorów Kubernetes w oficjalnej dokumentacji (Ale domyślny). Przeznaczony jest na potrzeby codziennej pracy i debugowania aplikacji w klastrze. W domu używamy go jako pełnoprawnego lekkiego narzędzia wizualnego, które pozwala nam zapewnić programistom niezbędny i wystarczający dostęp do klastra. Jego możliwości pokrywają wszystkie ich potrzeby, które pojawiają się w procesie korzystania z klastra (W zademonstrowaliśmy niektóre funkcje panelu). Jak można się domyślić, oznacza to, że spełnia wszystkie nasze wymagania wymienione powyżej.
Wśród głównych funkcji Kubernetes Dashboard:
- Nawigacja: zobacz główne obiekty K8s w kontekście przestrzeni nazw.
- Jeśli masz uprawnienia administratora, panel pokazuje węzły, przestrzenie nazw i woluminy trwałe. W przypadku węzłów dostępne są statystyki dotyczące wykorzystania pamięci, procesora, alokacji zasobów, metryk, statusu, zdarzeń itp.
- Przeglądaj aplikacje wdrożone w przestrzeni nazw według ich typu (Deployment, StatefulSet itp.), relacji między nimi (ReplicaSet, Horizontal Pod Autoscaler), ogólnych i spersonalizowanych statystyk i informacji.
- Przeglądaj usługi i obiekty Ingress, a także ich relacje z zasobnikami i punktami końcowymi.
- Wyświetl obiekty plików i magazyny: Trwały wolumin i Trwałe żądanie woluminu.
- Przeglądaj i edytuj ConfigMap i Secret.
- Zobacz rejestry.
- Dostęp do wiersza poleceń w kontenerach.
Istotną wadą (jednak nie dla nas) jest brak wsparcia dla pracy wieloklastrowej. Projekt jest aktywnie rozwijany przez społeczność i utrzymuje odpowiednie funkcje wraz z wydaniem nowych wersji i specyfikacji Kubernetes API: najnowsza wersja panelu to 22 maja 2020 r. — przetestowano zgodność z Kubernetes 1.18.
2. obiektyw
- ;
- ;
- (~4800 gwiazdek GitHub);
- Licencja: MIT;
- W skrócie: „Kubernetes IDE”.

Projekt jest pozycjonowany jako kompletne zintegrowane środowisko programistyczne (IDE) dla Kubernetes. Ponadto jest zoptymalizowany do pracy z wieloma klastrami i dużą liczbą uruchomionych w nich podów (testowane na 25 XNUMX podów).
Główne cechy/możliwości obiektywu:
- Samodzielna aplikacja, która nie wymaga instalacji w klastrze (dokładniej, Prometheus jest wymagany do uzyskania wszystkich metryk, ale można w tym celu wykorzystać istniejącą instalację). Instalacja „główna” jest wykonywana na komputerze osobistym z systemem Linux, macOS lub Windows.
- Zarządzanie wieloma klastrami (obsługiwane setki klastrów).
- Wizualizacja stanu klastra w czasie rzeczywistym.
- Wykresy wykorzystania zasobów i trendy z historią opartą na wbudowanym Prometheusie.
- Dostęp do wiersza poleceń kontenerów i węzłów klastra.
- Pełne wsparcie dla Kubernetes RBAC.
Aktualne wydanie - z dnia 16 czerwca 2020 r. Pierwotnie stworzony przez Kontenę, dziś cała własność intelektualna została przeniesiona do specjalnej organizacji , zwanym „związkiem maniaków i technologów natywnych w chmurze”, który jest odpowiedzialny za „zachowanie i dostępność oprogramowania i produktów Open Source firmy Kontena”.
Lens to drugi najpopularniejszy projekt na GitHubie z kategorii GUI dla Kubernetes, „tracąc” jedynie sam Kubernets Dashboard. Wszystkie inne rozwiązania Open Source spoza kategorii CLI* cieszą się znacznie mniejszą popularnością.
* Zobacz o K9 w bonusowej części recenzji.
3. Kubernetyczny
- ;
- ;
- (ponad 200 gwiazdek GitHub);
- Licencja: zastrzeżona;
- W skrócie: „Łatwe zarządzanie klastrami”.

Jest to zastrzeżona aplikacja instalowana na komputerze osobistym (obsługiwana Linux, macOS, WindowsTwórcy obiecują całkowite zastąpienie narzędzia wiersza poleceń, eliminując potrzebę zapamiętywania poleceń, a nawet zwiększając dziesięciokrotnie szybkość działania.
Jedną z ciekawych funkcji narzędzia jest wbudowana obsługa wykresów Helm, a jedną z wad jest brak metryk wydajności aplikacji.
Główne cechy Kubernetic:
- Wygodne wyświetlanie stanu klastra. Jeden ekran do przeglądania wszystkich powiązanych obiektów klastra i ich zależności; stan gotowości czerwony/zielony dla wszystkich obiektów; tryb widoku stanu klastra z aktualizacjami stanu w czasie rzeczywistym.
- Przyciski szybkiej akcji do usuwania i skalowania aplikacji.
- Obsługa pracy w wielu klastrach.
- Prosta praca z przestrzeniami nazw.
- Obsługa wykresów Helm i repozytoriów Helm (w tym prywatnych). Instalowanie wykresów i zarządzanie nimi w interfejsie internetowym.
Obecny koszt produktu to jednorazowa opłata 30 euro za korzystanie z niego przez jedną osobę dla dowolnej liczby przestrzeni nazw i klastrów.
4. Kubevous
- ;
- ;
- (~500 gwiazdek GitHub);
- Licencja: Apache 2.0
- W skrócie: „Kubevious sprawia, że klastry Kubernetes, konfiguracja aplikacji i przeglądanie statusu są bezpieczne i łatwe do zrozumienia”.

Ideą projektu jest stworzenie narzędzia przeznaczonego do analizy i debugowania konfiguracji aplikacji wdrożonych w klastrze. Autorzy skupili się przede wszystkim na implementacji tych funkcji, zostawiając bardziej ogólne sprawy na później.
Kluczowe cechy i funkcje Kubevious:
- Wizualizacja klastrów w sposób skoncentrowany na aplikacji: powiązane obiekty w interfejsie są pogrupowane i ustawione w hierarchii.
- Wizualne przedstawienie zależności w konfiguracjach i kaskadowych konsekwencji ich zmian.
- Wyświetlanie błędów konfiguracji klastra: niewłaściwe użycie etykiet, pominięte porty itp. (Nawiasem mówiąc, jeśli jesteś zainteresowany tą funkcją, zwróć uwagę na o którym my .)
- Oprócz poprzedniego punktu dostępne jest wykrywanie potencjalnie niebezpiecznych pojemników, tj. posiadanie zbyt wielu przywilejów (atrybutów
hostPID,hostNetwork,hostIPC, zamontowaćdocker.sockitp). - Zaawansowany system wyszukiwania klastra (nie tylko po nazwach obiektów, ale również po ich właściwościach).
- Narzędzia do planowania wydajności i optymalizacji zasobów.
- Wbudowany „wehikuł czasu” (możliwość zobaczenia poprzednich zmian w konfiguracji obiektów).
- Zarządzanie RBAC z powiązaną tabelą przestawną zawierającą Role, RoleBindings, ServiceAccounts.
- Działa tylko z jednym klastrem.
Projekt ma bardzo krótką historię (pierwsza premiera miała miejsce 11 lutego 2020 r.) i wydaje się, że nastąpił okres albo stabilizacji, albo spowolnienia rozwoju. Jeśli poprzednie wersje były wydawane często, najnowsza wersja ( 15 kwietnia 2020 r.) nie nadąża za początkowym tempem rozwoju. Wynika to prawdopodobnie z małej liczby współtwórców: w historii repozytorium jest ich tylko 4, a całą rzeczywistą pracę wykonuje jedna osoba.
5. Sześcienny
- ;
- Licencja: zastrzeżona (stanie się Open Source);
- W skrócie: „Prosty wieloplatformowy klient dla Kubernetes”.

Nowy produkt VMware, pierwotnie stworzony w ramach wewnętrznego hackathonu (czerwiec 2019). Zainstalowany na komputerze osobistym, działa w oparciu o (utrzymany) Linux, macOS и Windows) i wymaga wersji kubectl nie niższej niż 1.14.0.
Główne cechy Kubewise:
- Interakcja interfejsu z najczęściej używanymi jednostkami Kubernetes: węzłami, przestrzeniami nazw itp.
- Obsługa wielu plików kubeconfig dla różnych klastrów.
- Terminal z możliwością ustawienia zmiennej środowiskowej
KUBECONFIG. - Wygeneruj niestandardowe pliki kubeconfig dla danej przestrzeni nazw.
- Zaawansowane funkcje bezpieczeństwa (RBAC, hasła, konta usług).
Jak dotąd projekt ma tylko jedno wydanie - wersję z dnia 26 listopada 2019 r. Co więcej, autorzy planowali od razu wydać go jako Open Source, ale z powodu problemów wewnętrznych (niezwiązanych z kwestiami technicznymi) nie mogli tego zrobić. Od maja 2020 r. autorzy pracują nad kolejną wersją iw tym samym czasie powinni zainicjować proces otwierania kodu.
6. Konsola OpenShift
- ;
- (~150 gwiazdek GitHub);
- Licencja: Apache 2.0;
- W skrócie: „UI dla klastrów OpenShift”.

Pomimo faktu, że ten interfejs sieciowy jest częścią dystrybucji OpenShift (jest tam instalowany za pomocą ), autorzy możliwość instalacji/używania go w normalnych (waniliowych) instalacjach Kubernetes.
Konsola OpenShift jest rozwijana od dłuższego czasu, więc zawiera wiele funkcji. Wymienimy główne:
- Podejście współdzielonego interfejsu - dwie „perspektywy” możliwości dostępnych w Konsoli: dla administratorów i dla programistów. Tryb perspektywa dewelopera grupuje obiekty w formie bardziej zrozumiałej dla programistów (według aplikacji) i koncentruje interfejs na rozwiązywaniu typowych zadań, takich jak wdrażanie aplikacji, śledzenie statusu kompilacji/wdrażania, a nawet edytowanie kodu za pomocą Eclipse Che.
- Zarządzanie obciążeniami, siecią, pamięcią masową, prawami dostępu.
- Logiczny podział obciążeń na projekty i aplikacje. W jednym z najnowszych wydań - v4.3 - специальный Pulpit projektu, który wyświetla zwykłe dane (liczbę i stany wdrożeń, zasobników itp.; zużycie zasobów i inne metryki) w wycinku projektu.
- Aktualizowane w czasie rzeczywistym wyświetlanie stanu klastra, zmian (zdarzeń), które w nim zaszły; przeglądanie dzienników.
- Przeglądaj dane monitorowania oparte na Prometheus, Alertmanager i Grafana.
- Zarządzanie operatorami reprezentowanymi w .
- Zarządzaj kompilacjami uruchamianymi przez Dockera (z określonego repozytorium z plikiem Dockerfile), lub dowolne narzędzia zewnętrzne.
NB: Nie dodaliśmy innych do porównania Dystrybucje Kubernetesa (na przykład znacznie mniej znane ): pomimo faktu, że GUI może być w nich bardzo zaawansowany, zwykle jest częścią zintegrowanego stosu dużego systemu. Jeśli jednak uważasz, że brakuje rozwiązań, które w pełni funkcjonują w waniliowej instalacji K8s, daj nam znać w komentarzach.
Bonus
1. Portainer na Kubernetes w wersji Beta
- ;
- (~100 gwiazdek GitHub);
- Licencja: Zlib(?) (to samo dla projektu nadrzędnego).
Projekt zespołu Portainer, który opracował popularny interfejs o tej samej nazwie do pracy z Dockerem. Ponieważ projekt jest na wczesnym etapie rozwoju (pierwsza i jedyna wersja beta 16 kwietnia 2020 r.), nie ocenialiśmy jego funkcji. Jednak może to być interesujące dla wielu: jeśli dotyczy to Ciebie, śledź rozwój.
2. Lodowy panel
- ;
- Licencja: zastrzeżona;
- W skrócie: „Visual Kubernetes Editor”.

Ta młoda aplikacja komputerowa ma na celu wizualizację zasobów Kubernetes i zarządzanie nimi w czasie rzeczywistym za pomocą prostego interfejsu typu „przeciągnij i upuść”. Obecnie obsługiwane obiekty to Pod, Service, Deployment, StatefulSet, PersistentVolume, PersistentVolumeClaim, ConfigMap i Secret. Wkrótce obiecują dodać wsparcie dla Helma. Głównymi wadami są bliskość kodu (oczekuje się ) i brak wsparcia Linux (na razie dostępne są tylko wersje Windows и macOS(choć jest to najprawdopodobniej tylko kwestia czasu).
3.k9s
- ;
- ;
- (~7700 gwiazdek GitHub);
- Licencja: Apache 2.0;
- W skrócie: „Interfejs konsoli dla Kubernetes, który pozwala stylowo zarządzać klastrem”.

Narzędzie znalazło się tylko w części bonusowej recenzji z tego powodu, że oferuje graficzny interfejs użytkownika konsoli. Jednak autorzy dosłownie wycisnęli z terminala maksimum, oferując nie tylko przyjazny dla użytkownika interfejs, ale także 6 predefiniowanych motywów oraz zaawansowany system skrótów klawiaturowych i aliasów poleceń. Ich dokładne podejście nie ograniczało się do wyglądu: funkcje k9s są przyjemnie imponujące: zarządzanie zasobami, wyświetlanie stanu klastra, wyświetlanie zasobów w hierarchicznej reprezentacji z zależnościami, przeglądanie logów, obsługa RBAC, rozszerzanie możliwości poprzez wtyczki… Wszystko to przemawiało do szerokiej społeczności K8s: liczba Gwiazdy projektu GitHub są prawie tak dobre, jak oficjalny Kubernetes Dashboard!
4. Panele kontrolne aplikacji
I na koniec recenzji - osobna mini-kategoria. Zawierał dwa interfejsy webowe przeznaczone nie do kompleksowego zarządzania klastrami Kubernetes, ale do zarządzania tym, co jest w nich wdrożone.
Jak wiesz, jednym z najbardziej dojrzałych i rozpowszechnionych narzędzi do wdrażania złożonych aplikacji w Kubernetes jest Helm. W okresie jego istnienia zgromadzono wiele pakietów (wykresy Helm) w celu łatwego wdrożenia . Dlatego pojawienie się odpowiednich narzędzi wizualnych, które pozwalają zarządzać cyklem życia wykresów jest dość logiczne.
4.1. Jednooczny
- (ponad 1300 gwiazdek GitHub);
- Licencja: Apache 2.0;
- W skrócie: „Aplikacja internetowa do wyszukiwania i odkrywania wykresów Helma w wielu repozytoriach. Służy jako podstawa projektu piasty Helm”.

To opracowanie autorów Helm jest instalowane w Kubernetes i działa w ramach tego samego klastra, wykonując zadanie. Jednak obecnie projekt prawie nie jest rozwijany. Jego głównym celem jest wspieranie istnienia Helm Hub. W przypadku innych potrzeb autorzy polecają Kubeapps (patrz poniżej) lub Red Hat Automation Broker (część OpenShift, ale już nie rozwijana).
4.2. Kubeapps
- ;
- ;
- (~2100 gwiazdek GitHub);
- Licencja: Apache 2.0
- W skrócie: „Dashboard aplikacji dla Kubernetes”.

Produkt firmy Bitnami, który również jest instalowany w klastrze Kubernetes, ale różni się od Monocular początkowym skupieniem się na pracy z prywatnymi repozytoriami.
Kluczowe funkcje i cechy Kubeapps:
- Przeglądaj i instaluj wykresy Helm z repozytoriów.
- Sprawdź, zaktualizuj i usuń aplikacje oparte na Helm zainstalowane w klastrze.
- Obsługa niestandardowych i prywatnych repozytoriów wykresów (obsługuje ChartMuseum i JFrog Artifactory).
- Przeglądanie i praca z usługami zewnętrznymi - z Katalogu usług i Brokerów usług.
- Publikowanie zainstalowanych aplikacji przy użyciu mechanizmu Service Catalog Bindings.
- Wsparcie dla uwierzytelniania i rozdzielania uprawnień przy użyciu RBAC.
Tablica wyników
Poniżej znajduje się tabela podsumowująca, w której staraliśmy się podsumować i zagregować główne cechy istniejących interfejsów wizualnych, aby ułatwić porównanie:
(wersja online tabeli .)
wniosek
GUI dla Kubernetes to dość specyficzna i młoda nisza. Rozwija się jednak bardzo aktywnie: można już znaleźć rozwiązania zarówno dość dojrzałe, jak i bardzo młode, które mają jeszcze pole do rozwoju. Obsługują różnorodne zastosowania, oferując funkcje i wygląd odpowiadające niemal każdemu gustowi. Mamy nadzieję, że ta recenzja pomoże Ci wybrać narzędzie, które najlepiej odpowiada Twoim aktualnym potrzebom.
PS
Dziękuję Ci dla danych w konsoli OpenShift dla tabeli porównawczej!
Przeczytaj także na naszym blogu:
- «";
- «";
- «";
- «".
Źródło: www.habr.com
