Przegląd interfejsów graficznych dla Kubernetes

Przegląd interfejsów graficznych dla Kubernetes

Aby w pełni korzystać z systemu, ważna jest znajomość narzędzi wiersza poleceń: w przypadku Kubernetes jest to kubectl. Z drugiej strony, dobrze zaprojektowane, przemyślane interfejsy graficzne mogą wykonywać większość zwykłych zadań i otworzyć dodatkowe możliwości podczas eksploatacji systemów.większąW zeszłym roku opublikowaliśmy tłumaczenie

małej recenzji web UI dla Kubernetes, związaną z ogłoszeniem interfejsu internetowego Kubernetes Web View . Autorem tego artykułu i samego narzędzia jest Henning Jacobs z firmy Zalando, który właśnie pozycjonował nowinkę jako „kubectl dla sieci”. Chciał stworzyć narzędzie z wygodnymi możliwościami do interakcji w formacie wsparcia technicznego (na przykład szybko pokazać problem za pomocą linku internetowego) i do reagowania na incydenty, szukania problemów w wielu klastrach jednocześnie. Jego dzieło wciąż się rozwija (głównie dzięki samemu autorowi).Obsługując wiele klastrów Kubernetes o różnych skalach, również jesteśmy zainteresowani możliwością dostarczania klientom narzędzia do wizualnej pracy. Przy wyborze odpowiedniego interfejsu kluczowe dla nas były następujące możliwości:

wsparcie dla rozgraniczenia praw użytkowników (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 pod’a;
  • przeglądanie logów pod’ów;
  • przeglądanie stanu pod’ów (
  • describe statususuwanie pod’ów.);
  • Inne funkcje, takie jak przeglądanie używanych zasobów (w kontekście pod’ów/kontrolerów/przestrzeni nazw), tworzenie/edycja prymitywów K8s, w ramach naszego procesu roboczego nie są aktualnie istotne.

Przegląd rozpoczniemy od klasycznego Kubernetes Dashboard, który został przyjęty jako standard. Ponieważ świat się nie zatrzymuje (co oznacza, że Kubernetes zyskuje nowe GUI), opowiemy również o jego aktualnych alternatywach, podsumowując wszystko w tabeli porównawczej na końcu artykułu.

: W przeglądzie nie będziemy się powtarzać w przypadku tych rozwiązań, które zostały już omówione w

NB, ale – dla pełniejszego obrazu – odpowiednie opcje z niej (K8Dash, Octant, Kubernetes Web View) zostały uwzględnione w końcowej tabeli. W poprzednim artykule1. Kubernetes Dashboard

Strona dokumentacji

  • (8000+ gwiazdek na GitHubie);;
  • Repozytorium Licencja: Apache 2.0;
  • Лицензия: Apache 2.0;
  • Krótko mówiąc: „Uniwersalny interfejs webowy dla klastrów Kubernetes. Umożliwia użytkownikom zarządzanie aplikacjami działającymi w klastrze oraz rozwiązywanie ich problemów, a także zarządzanie samym klastrem”.

Przegląd interfejsów graficznych dla Kubernetes

To panel ogólnego przeznaczenia, który autorzy Kubernetes opisują w oficjalnej dokumentacji. (chociaż nie jest rozwijany domyślnie). Jest zaprojektowany dla codziennych potrzeb operacyjnych i debugowania aplikacji w klastrze. Używamy go jako pełnoprawnego, lekkiego narzędzia wizualnego, pozwalającego deweloperom na niezbędny i wystarczający dostęp do klastra. Jego możliwości pokrywają wszystkie ich potrzeby, które powstają w trakcie korzystania z klastra. (w w tym artykule pokazaliśmy niektóre funkcje panelu). Jak łatwo się domyślić, oznacza to, że spełnia wszystkie nasze wymagania wymienione powyżej.

Do głównych możliwości Dashboard Kubernetes należą:

  • Nawigacja: przegląd podstawowych obiektów K8s w kontekście przestrzeni nazw.
  • W przypadku uprawnień administratora panel pokazuje węzły, przestrzenie nazw i Persistent Volumes. Dostępne są statystyki dotyczące wykorzystania pamięci, procesora, przydziału zasobów, metryk, statusu, zdarzeń itd.
  • Przegląd aplikacji wdrożonych w przestrzeni nazw według ich typu (Deployment, StatefulSet itp.), relacji między nimi (ReplicaSet, Horizontal Pod Autoscaler), ogólnej i spersonalizowanej statystyki oraz informacji.
  • Przegląd usług i Ingressów, a także ich relacji z podami i endpointami.
  • Przegląd obiektów plikowych i magazynów: Persistent Volume i Persistent Volume Claim.
  • Przegląd i edycja ConfigMap i Secret.
  • Przegląd logów.
  • Dostęp do wiersza poleceń w kontenerach.

Istotna wada (jednak nie dla nas)— brak wsparcia dla pracy z wieloma klastrami. Projekt jest aktywnie rozwijany przez społeczność i wspiera aktualne funkcje wraz z wydaniem nowych wersji i specyfikacji Kubernetes API: ostatnia wersja panelu — v2.0.1 z 22 maja 2020 r. — przetestowana pod kątem zgodności z Kubernetes 1.18.

2. Lens

Przegląd interfejsów graficznych dla Kubernetes

Projekt jest pozycjonowany jako pełnoprawne zintegrowane środowisko programistyczne (IDE) dla Kubernetes. Jest zoptymalizowany do pracy z wieloma klastrami i dużą liczbą uruchomionych w nich podów (testowany na 25 tysiącach podów).

Główne cechy/możliwości Lens:

  • Aplikacja autonomiczna, nie wymagająca instalacji czegokolwiek w klastrze (dokładniej, do uzyskania wszystkich metryk będzie potrzebny Prometheus, ale można też skorzystać z istniejącej instalacji). „Główna” instalacja odbywa się na komputerze osobistym działającym pod kontrolą systemów Linux, macOS lub Windows.
  • Zarządzanie multiklastrowe (obsługiwanych jest setki klastrów).
  • Wizualizacja stanu klastra w czasie rzeczywistym.
  • Wykresy użycia zasobów i trendy z historią na podstawie wbudowanego Prometheusa.
  • Dostęp do terminala kontenerów oraz węzłów klastra.
  • Pełne wsparcie dla Kubernetes RBAC.

Aktualne wydanie — 3.5.0 od 16 czerwca 2020 r. Pierwsza wersja została stworzona w firmie Kontena, a obecnie cała własność intelektualna została przekazana specjalnej organizacji Lakend Labs, zwanej „związkiem entuzjastów cloud native i technologów”, odpowiedzialnej za „zachowanie i dostępność oprogramowania Open Source i produktów Kontena”.

Lens to drugi najpopularniejszy projekt na GitHubie w kategorii GUI dla Kubernetes, ustępujący jedynie samemu Kubernets Dashboard. Wszystkie pozostałe rozwiązania Open Source niezwiązane z CLI* są znacznie mniej popularne.

* Patrz K9s w bonusowej części przeglądu.

3. Kubernetic

Przegląd interfejsów graficznych dla Kubernetes

To własnościowa aplikacja, instalowana na komputerze osobistym (obsługiwane są Linux, macOS, Windows). Jej autorzy obiecują pełną alternatywę dla narzędzia wiersza poleceń, a także brak konieczności zapamiętywania poleceń i dziesięciokrotne zwiększenie wydajności.

Jedną z ciekawych cech narzędzia jest wbudowane wsparcie dla chartów Helm, a jednym z jego wad — brak metryk wydajności aplikacji.

Główne funkcje 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 wszystkich obiektów w kolorze czerwonym/zielonym; tryb wyświetlania stanu klastra z aktualizacją statusu w czasie rzeczywistym.
  • Przyciski szybkiego działania do usuwania i skalowania aplikacji.
  • Wsparcie dla pracy multiklastrowej.
  • Prosta praca z przestrzeniami nazw.
  • Wsparcie dla Helm chartów i repozytoriów Helm (w tym prywatnych). Instalacja i zarządzanie chartami w interfejsie webowym.

Aktualna cena produktu — jednorazowa opłata w wysokości 30 euro za korzystanie przez jedną osobę w dowolnej liczbie przestrzeni nazw i klastrów.

4. Kubevious

  • Strona;
  • Prezentacja;
  • Repozytorium (~500 gwiazd na GitHubie);
  • Licencja: Apache 2.0
  • W skrócie: „Kubevious sprawia, że klastry Kubernetes, konfiguracje aplikacji i przeglądanie ich stanu są bezpieczne i zrozumiałe”.

Przegląd interfejsów graficznych dla Kubernetes

Idea projektu polega na stworzeniu narzędzia służącego do analizy i debugowania konfiguracji aplikacji wdrożonych w klastrze. Autorzy skupili się przede wszystkim na realizacji tych funkcji, zostawiając bardziej ogólne rzeczy na później.

Główne cechy i funkcje Kubevious:

  • Wizualizacja klastra w sposób zorientowany na aplikacje: powiązane obiekty w interfejsie grupowane są w hierarchię.
  • Wyraźne przedstawienie zależności w konfiguracjach i kaskadowych skutków ich zmian.
  • Wykrywanie błędów w konfiguracji klastra: niewłaściwe użycie etykiet, pominięte porty itp. (Przy okazji, jeśli interesuje Cię ta funkcja, zwróć uwagę na Polaris, o którym niedawno opowiadaliśmy. już pisaliśmy.)
  • Dodatkowo do poprzedniego punktu — dostępne wykrywanie potencjalnie niebezpiecznych kontenerów, tj. mających zbyt duże uprawnienia (atrybuty hostPID, hostNetwork, hostIPC, montowanie docker.sock i tym podobne).
  • Zaawansowany system wyszukiwania w klastrze (nie tylko według nazw obiektów, ale także według ich właściwości).
  • Narzędzia do planowania mocy i optymalizacji zasobów.
  • Wbudowana „maszyna czasu” (możliwość zobaczenia wcześniejszych zmian w konfiguracji obiektów).
  • Zarządzanie RBAC za pomocą zestawionej tabeli ze Roles, RoleBindings, ServiceAccounts.
  • Działa tylko z jednym klastrem.

Projekt ma bardzo krótką historię (pierwsza wersja ukazała się 11 lutego 2020 r.) i zdaje się, że nastał okres albo stabilizacji, albo spowolnienia w rozwoju. Jeśli wcześniejsze wersje były wydawane często, to ostatnie wydanie (v0.5 z 15 kwietnia 2020 r.) odbiega od początkowego tempa rozwoju. Prawdopodobnie jest to związane z niewielką liczbą współpracowników: w historii repozytorium jest ich tylko 4, a cała faktyczna praca prowadzona jest przez jedną osobę.

5. Kubewise

  • Strona projektu;
  • Licencja: własnościowa (stanie się Open Source);
  • Krótko: „Prosty, wieloplatformowy klient dla Kubernetes.”

Przegląd interfejsów graficznych dla Kubernetes

Nowy produkt od firmy VMware, pierwotnie stworzony w ramach wewnętrznego hackathonu (w czerwcu 2019 roku). Instalowany na komputerze osobistym, działa na bazie Electron (obsługiwane Linux, macOS i Windows) i wymaga kubectl w wersji co najmniej v1.14.0.

Główne funkcje Kubewise:

  • Interakcja w interfejsie z najczęściej używanymi zasobami Kubernetes: węzłami, przestrzeniami nazw itp.
  • Wsparcie dla wielu plików kubeconfig dla różnych klastrów.
  • Terminal z możliwością ustawienia zmiennej środowiskowej KUBECONFIG.
  • Generowanie niestandardowych plików kubeconfig dla określonej przestrzeni nazw.
  • Rozszerzone możliwości zabezpieczeń (RBAC, hasła, konta serwisowe).

Jak dotąd projekt ma tylko jedną wersję — wersję 1.1.0 z 26 listopada 2019 roku. Autorzy planowali od razu wydać go jako Open Source, jednak z powodu problemów wewnętrznych (nie związanych z kwestiami technicznymi) nie mogli tego zrobić. Stan na maj 2020, autorzy pracują nad następną wersją i równocześnie chcą zainicjować proces otwarcia kodu.

6. OpenShift Console

Przegląd interfejsów graficznych dla Kubernetes

Pomimo, że ten interfejs webowy jest częścią dystrybucji OpenShift (tam instalowany jest za pomocą specjalnego operatora), autorzy przewidzieli możliwość jego instalacji/użytkowania również w standardowych (vanilla) instalacjach Kubernetes.

OpenShift Console rozwija się już od dłuższego czasu, więc wbudowano w nią wiele funkcji. Wspomnijmy o głównych z nich:

  • Podzielone podejście do interfejsu — dwa „widoki” dostępne w Console: dla administratorów i dla programistów. Tryb Developer perspective grupuje obiekty w bardziej zrozumiały dla programistów sposób (według aplikacji) i kieruje interfejs na rozwiązanie takich typowych zadań jak wdrażanie aplikacji, śledzenie statusu budowy/wdrażania, a nawet edytowanie kodu przez Eclipse Che.
  • Zarządzanie obciążeniami roboczymi, siecią, magazynami, prawami dostępu.
  • Logiczne podział dla obciążeń roboczych na projekty i aplikacje. W jednej z ostatnich wersji — v4.3 — pojawił się specjalny Project dashboard, wyświetlający znajome dane (liczba i statusy deploymentów, podów itp.; zużycie zasobów i inne metryki) w kontekście projektów.
  • Aktualizowane w czasie rzeczywistym wyświetlanie stanu klastra, wprowadzonych w nim zmian (zdarzeń); przeglądanie dzienników.
  • Przeglądanie danych monitorowania opartych na Prometheus, Alertmanager i Grafana.
  • Zarządzanie operatorami przedstawionymi w OperatorHub.
  • Zarządzanie obrazami, które są uruchamiane przez Docker (z określonego repozytorium z Dockerfile), S2I lub dowolnymi zewnętrznymi narzędziami.

NB: Nie zdecydowaliśmy się dodać do porównania innych dystrybucji Kubernetes (na przykład znacznie mniej znanej Kubesphere): mimo że interfejs graficzny w nich może być bardzo zaawansowany, zazwyczaj jest częścią zintegrowanego stosu dużego systemu. Jeśli jednak uważasz, że niektórych rozwiązań, które w pełni funkcjonują w vanilla-instalacji K8s, brakuje — daj nam znać w komentarzach.

Bonus

1. Portainer na Kubernetes w wersji beta

  • Strona;
  • Repozytorium (~100 gwiazdek na GitHubie);
  • Licencja: Zlib(?) (taka jest w przypadku projektu macierzystego).

Projekt zespołu Portainer, który stworzył popularny interfejs o tej samej nazwie do pracy z Dockerem. Ponieważ projekt znajduje się na wczesnym etapie rozwoju (pierwsza i jedyna wersja beta została wydana 16 kwietnia 2020 r.), nie ocenialiśmy jego funkcji. Niemniej jednak może on zainteresować wielu użytkowników: jeśli to dotyczy ciebie — śledź rozwój.

2. IcePanel

  • Strona;
  • Licencja: własnościowa;
  • W skrócie: „Wizualny edytor Kubernetes”.

Przegląd interfejsów graficznych dla Kubernetes

To młoda aplikacja desktopowa mająca na celu wizualizację zasobów Kubernetes w czasie rzeczywistym i zarządzanie nimi z prostym interfejsem w stylu drag & drop. Z aktualnie wspieranych obiektów dostępne są Pod, Service, Deployment, StatefulSet, PersistentVolume, PersistentVolumeClaim, ConfigMap i Secret. Wkrótce obiecują dodać wsparcie dla Helm. Główne wady to zamkniętość kodu (oczekuje się jego otwarcia „w jakiejś formie”) oraz brak wsparcia dla Linuxa (na razie dostępne są tylko wersje na Windows i macOS, chociaż to także prawdopodobnie tylko kwestia czasu).

3. k9s

  • Strona;
  • Demonstracja;
  • Repozytorium (~7700 gwiazdek na GitHubie);
  • Лицензия: Apache 2.0;
  • W skrócie: „Interfejs konsolowy dla Kubernetes, pozwalający stylowo zarządzać klastrem.”

Przegląd interfejsów graficznych dla Kubernetes

Narzędzie znalazło się jedynie w bonusowej części przeglądu, ponieważ oferuje konsolowy interfejs użytkownika. Jednak autorzy dosłownie wydobyli maksimum z terminala, oferując nie tylko wygodny interfejs, ale także 6 predefiniowanych motywów, rozwinięty system skrótów klawiszowych oraz aliasów dla poleceń. Ich staranne podejście nie ograniczyło się do wyglądu: możliwości k9s są w rzeczy samej imponujące: zarządzanie zasobami, wyświetlanie stanu klastra, przedstawianie zasobów w hierarchicznym układzie z zależnościami, przeglądanie logów, wsparcie dla RBAC, rozszerzenie możliwości poprzez wtyczki… To wszystko przypadło do gustu szerokiej społeczności K8s: liczba gwiazdek projektu na GitHubie praktycznie dorównuje oficjalnemu Kubernetes Dashboard!

4. Panele zarządzania aplikacjami

I na zakończenie przeglądu — osobna mini-kategoria. Znalazły się w niej dwa interfejsy webowe, przeznaczone nie do kompleksowego zarządzania klastrami Kubernetes, lecz do zarządzania tym, co jest w nich rozlokowane.

Jak wiadomo, jednym z najbardziej dojrzałych i rozpowszechnionych narzędzi do wdrażania złożonych aplikacji w Kubernetes jest Helm. W ciągu jego istnienia zebrało się wiele pakietów (Helm charts) do prostego wdrażania wielu popularnych aplikacji. Dlatego całkiem logiczne jest pojawienie się odpowiednich wizualnych narzędzi umożliwiających zarządzanie cyklem życia chartów.

4.1. Monocular

  • Repozytorium (1300+ gwiazdek GitHub);
  • Лицензия: Apache 2.0;
  • Krótko mówiąc: "Aplikacja webowa do wyszukiwania i odkrywania Helm charts w wielu repozytoriach. Stanowi podstawę projektu Helm hub."

Przegląd interfejsów graficznych dla Kubernetes

Ten rozwój od autorów Helm jest instalowany w Kubernetes i działa w obrębie jednego klastra, wykonując postawione zadanie. Jednak obecnie projekt niemal nie jest rozwijany. Jego głównym celem jest wsparcie istnienia Helm Hub. Do innych potrzeb autorzy polecają Kubeapps (patrz dalej) lub Red Hat Automation Broker (część OpenShift, ale również już nie rozwijany).

4.2. Kubeapps

Przegląd interfejsów graficznych dla Kubernetes

Produkt od Bitnami, który również jest instalowany w klastrze Kubernetes, ale różni się od Monocular początkowym skupieniem na pracy z prywatnymi repozytoriami.

Kluczowe funkcje i cechy Kubeapps:

  • Przeglądanie i instalacja Helm chartów z repozytoriów.
  • Sprawdzanie, aktualizowanie i usuwanie aplikacji opartych na Helm, zainstalowanych w klastrze.
  • Wsparcie dla pracy z niestandardowymi i prywatnymi repozytoriami chartów (obsługuje ChartMuseum i JFrog Artifactory).
  • Przeglądanie i praca z zewnętrznymi usługami — z Service Catalog i Service Brokers.
  • Publikacja zainstalowanych aplikacji za pomocą mechanizmu Service Catalog Bindings.
  • Wsparcie dla uwierzytelniania i podziału uprawnień za pomocą RBAC.

Tabela podsumowująca

Poniżej znajduje się tabela, w której staraliśmy się zebrać i zsyntetyzować główne możliwości istniejących interfejsów wizualnych, aby ułatwić porównanie:

Przegląd interfejsów graficznych dla Kubernetes
(Wersja online tabeli jest dostępna w Google Docs..)

Podsumowanie

Graficzne interfejsy dla Kubernetes to dość specyficzna i młoda nisza. Jednak rozwija się ona dość aktywnie: już można znaleźć zarówno dojrzałe rozwiązania, jak i zupełnie nowe, które mają jeszcze wiele do zrobienia. Skierowane są na różne opcje zastosowania, oferując funkcje i wygląd praktycznie na każdy gust. Mamy nadzieję, że ta recenzja pomoże w wyborze narzędzia, które najlepiej odpowiada bieżącym potrzebom.

P.S.

Dziękujemy kvaps za dane dotyczące OpenShift Console do tabeli porównawczej!

Przeczytaj także na naszym blogu:

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster