Przegląd graficznych interfejsów użytkownika dla Kubernetes

Przegląd graficznych interfejsów użytkownika dla Kubernetes

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 mały przegląd interfejsu internetowego dla Kubernetes, zbiegło się w czasie z ogłoszeniem interfejsu sieciowego WebView Kubernetes. 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 ostatni artykuł, jednak dla kompletności odpowiednie opcje z niego (K8Dash, Octant, Kubernetes Web View) są uwzględnione w tabeli końcowej.

1. Pulpit nawigacyjny Kubernetes

  • Strona dokumentacji;
  • magazyn (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”.

Przegląd graficznych interfejsów użytkownika dla Kubernetes

Jest to panel ogólnego przeznaczenia opisany przez autorów Kubernetes w oficjalnej dokumentacji (Ale nierozmieszczalny 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 ten artykuł 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 v2.0.1 22 maja 2020 r. — przetestowano zgodność z Kubernetes 1.18.

2. obiektyw

Przegląd graficznych interfejsów użytkownika dla Kubernetes

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 instalowania czegokolwiek wewnątrz klastra (dokładniej, Prometheus będzie wymagany do uzyskania wszystkich metryk, ale można do tego również wykorzystać istniejącą instalację). Instalacja „główna” odbywa się 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 - 3.5.0 z dnia 16 czerwca 2020 r. Pierwotnie stworzony przez Kontenę, dziś cała własność intelektualna została przeniesiona do specjalnej organizacji Laboratoria Lakenda, 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

Przegląd graficznych interfejsów użytkownika dla Kubernetes

Jest to zastrzeżona aplikacja instalowana na komputerze osobistym (obsługiwane są systemy Linux, macOS, Windows). Jego autorzy obiecują całkowitą wymianę narzędzia wiersza poleceń, a wraz z nim - brak konieczności zapamiętywania poleceń, a nawet dziesięciokrotny wzrost szybkości 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

  • Strona;
  • prezentacja;
  • magazyn (~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”.

Przegląd graficznych interfejsów użytkownika dla Kubernetes

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 Polariso którym my już napisałem.)
  • 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.sock itp).
  • 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 (v0.5 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

  • Strona projektu;
  • Licencja: zastrzeżona (stanie się Open Source);
  • W skrócie: „Prosty wieloplatformowy klient dla Kubernetes”.

Przegląd graficznych interfejsów użytkownika dla Kubernetes

Nowy produkt VMware, pierwotnie stworzony w ramach wewnętrznego hackathonu (czerwiec 2019). Zainstalowany na komputerze osobistym, działa w oparciu o Elektron (obsługiwane systemy Linux, macOS i Windows) i wymaga kubectl w wersji 1.14.0 lub nowszej.

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ę 1.1.0 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

Przegląd graficznych interfejsów użytkownika dla Kubernetes

Pomimo faktu, że ten interfejs sieciowy jest częścią dystrybucji OpenShift (jest tam instalowany za pomocą operator specjalny), autorzy dostarczyły 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 - pojawiła специальный 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 centrum operatora.
  • Zarządzaj kompilacjami uruchamianymi przez Dockera (z określonego repozytorium z plikiem Dockerfile), S2I lub dowolne narzędzia zewnętrzne.

NB: Nie dodaliśmy innych do porównania Dystrybucje Kubernetesa (na przykład znacznie mniej znane Kubesfera): 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

  • Strona;
  • magazyn (~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 wysiadłem 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

  • Strona;
  • Licencja: zastrzeżona;
  • W skrócie: „Visual Kubernetes Editor”.

Przegląd graficznych interfejsów użytkownika dla Kubernetes

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ę otwarcie „w jakiś sposób”) oraz brak wsparcia dla Linuksa (na razie dostępne są tylko wersje dla Windows i macOS, choć to też najprawdopodobniej tylko kwestia czasu).

3.k9s

  • Strona;
  • Demonstracja;
  • magazyn (~7700 gwiazdek GitHub);
  • Licencja: Apache 2.0;
  • W skrócie: „Interfejs konsoli dla Kubernetes, który pozwala stylowo zarządzać klastrem”.

Przegląd graficznych interfejsów użytkownika dla Kubernetes

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 wiele popularnych aplikacji. Dlatego pojawienie się odpowiednich narzędzi wizualnych, które pozwalają zarządzać cyklem życia wykresów jest dość logiczne.

4.1. Jednooczny

  • magazyn (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”.

Przegląd graficznych interfejsów użytkownika dla Kubernetes

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

  • Strona;
  • prezentacja;
  • magazyn (~2100 gwiazdek GitHub);
  • Licencja: Apache 2.0
  • W skrócie: „Dashboard aplikacji dla Kubernetes”.

Przegląd graficznych interfejsów użytkownika 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:

Przegląd graficznych interfejsów użytkownika dla Kubernetes
(wersja online tabeli dostępne w Dokumentach Google.)

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 kvaps dla danych w konsoli OpenShift dla tabeli porównawczej!

Przeczytaj także na naszym blogu:

Źródło: www.habr.com

Dodaj komentarz