Ogłoszenie o Kubernetes Web View (oraz krótkie omówienie innych internetowych interfejsów użytkownika dla Kubernetes)

Notatka. przeł.: Autorem oryginalnego materiału jest Henning Jacobs z Zalando. Stworzył nowy interfejs sieciowy do pracy z Kubernetesem, który jest pozycjonowany jako „kubectl for the web”. Dlaczego pojawił się nowy projekt Open Source i jakich kryteriów nie spełniły dotychczasowe rozwiązania – przeczytaj jego artykuł.

Ogłoszenie o Kubernetes Web View (oraz krótkie omówienie innych internetowych interfejsów użytkownika dla Kubernetes)

W tym poście recenzuję różne interfejsy internetowe Kubernetes typu open source, przedstawiam moje wymagania dotyczące uniwersalnego interfejsu użytkownika i wyjaśniam, dlaczego je opracowałem WebView Kubernetes — interfejs zaprojektowany w celu ułatwienia obsługi i rozwiązywania problemów wielu klastrów jednocześnie.

Przypadków użycia

W Zalando obsługujemy dużą liczbę użytkowników Kubernetes (ponad 900) i klastrów (ponad 100). Istnieje kilka typowych przypadków użycia, w których zastosowanie dedykowanego narzędzia internetowego byłoby korzystne:

  1. komunikacja ze współpracownikami w celu uzyskania wsparcia;
  2. reagowanie na zdarzenia i badanie ich przyczyn.

Wsparcie

Z mojego doświadczenia wynika, że ​​komunikacja z pomocą techniczną często wygląda następująco:

— Pomocy, nasza usługa XYZ jest niedostępna!
— Co widzisz podczas występów kubectl describe ingress ...?

Lub coś podobnego dla CRD:

— Mam pewien problem z usługą identyfikacji…
— Co daje polecenie? kubectl describe platformcredentialsset ...?

Taka komunikacja sprowadza się zazwyczaj do wprowadzenia różnych wariantów polecenia kubectl w celu zidentyfikowania problemu. W rezultacie obie strony rozmowy zmuszone są do ciągłego przełączania się między terminalem a czatem internetowym, a ponadto obserwują odmienną sytuację.

Dlatego chciałbym, aby interfejs internetowy Kubernetes umożliwiał:

  • użytkownicy mogliby wymieniać linki i obserwujcie to samo;
  • mogłoby pomóc uniknąć błędów ludzkich w obsłudze: np. logowanie do złego klastra w wierszu poleceń, literówki w poleceniach CLI itp.;
  • pozwoliłby generuj własne poglądy wysłać do współpracowników, czyli dodać kolumny tagów, wyświetlić wiele rodzajów zasobów na jednej stronie;
  • W idealnym przypadku to narzędzie internetowe powinno umożliwiać ustawienie „głębokie” linki do określonych sekcji YAML (na przykład wskazanie nieprawidłowego parametru powodującego awarie).

Reakcja i analiza incydentów

Reagowanie na incydenty infrastrukturalne wymaga świadomości sytuacyjnej, umiejętności oceny skutków i poszukiwania wzorców w klastrach. Kilka przykładów z życia:

  • Kluczowa usługa produkcyjna ma problemy i jest to konieczne znajdź wszystkie zasoby Kubernetes według nazwy we wszystkich klastrachrozwiązywać problemy;
  • węzły zaczynają spadać podczas skalowania i potrzebujesz znajdź wszystkie pody ze statusem „Oczekujące” we wszystkich klastrachocenić zakres problemu;
  • indywidualni użytkownicy zgłaszają problem z DaemonSet wdrożonym we wszystkich klastrach i muszą się dowiedzieć Czy problem jest całkowity?.

Moje standardowe rozwiązanie w takich przypadkach to coś takiego for i in $clusters; do kubectl ...; done. Oczywiście możliwe jest opracowanie narzędzia zapewniającego podobne możliwości.

Istniejące interfejsy internetowe Kubernetes

Świat open source interfejsów internetowych do Kubernetesa nie jest zbyt duży*, dlatego starałem się zebrać więcej informacji za pomocą Twitter:

Ogłoszenie o Kubernetes Web View (oraz krótkie omówienie innych internetowych interfejsów użytkownika dla Kubernetes)

*Moje wyjaśnienie ograniczonej liczby interfejsów internetowych dla Kubernetes: usługi w chmurze i dostawcy Kubernetes zazwyczaj oferują własne frontendy, więc rynek „dobrego” bezpłatnego interfejsu Kubernetes UI jest stosunkowo niewielki.

Dowiedziałem się o tym z tweeta K8Dash, Kubernatora и Oktant. Przyjrzyjmy się im i innym istniejącym rozwiązaniom Open Source, spróbujmy zrozumieć, czym są.

K8Dash

„K8Dash to najprostszy sposób zarządzania klastrem Kubernetes.”

Ogłoszenie o Kubernetes Web View (oraz krótkie omówienie innych internetowych interfejsów użytkownika dla Kubernetes)

K8Dash Wygląda dobrze i działa szybko, ale ma wiele wad w przypadku zastosowań wymienionych powyżej:

  • Działa tylko w granicach jednego klastra.
  • Sortowanie i filtrowanie są możliwe, ale nie mają bezpośrednich linków.
  • Niestandardowe definicje zasobów (CRD) nie są obsługiwane.

Kubernatora

„Kubernator to alternatywny interfejs użytkownika dla Kubernetesa. W przeciwieństwie do wysokopoziomowego Kubernetes Dashboard zapewnia kontrolę niskiego poziomu i doskonały wgląd we wszystkie obiekty w klastrze z możliwością tworzenia nowych, edytowania ich i rozwiązywania konfliktów. Będąc aplikacją całkowicie kliencką (jak kubectl), nie wymaga żadnego backendu innego niż sam serwer Kubernetes API, a także przestrzega zasad dostępu do klastra.

Ogłoszenie o Kubernetes Web View (oraz krótkie omówienie innych internetowych interfejsów użytkownika dla Kubernetes)

To całkiem dokładny opis Kubernatora. Niestety brakuje mu kilku funkcji:

  • Obsługuje tylko jeden klaster.
  • Nie ma trybu widoku listy (tzn. nie można wyświetlić wszystkich podów ze statusem „Oczekujące”).

Pulpit nawigacyjny Kubernetes

„Kubernetes Dashboard to uniwersalny interfejs sieciowy 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.

Ogłoszenie o Kubernetes Web View (oraz krótkie omówienie innych internetowych interfejsów użytkownika dla Kubernetes)

Niestety, Pulpit nawigacyjny Kubernetes tak naprawdę nie pomaga w moich działaniach wsparcia i reagowania na incydenty, ponieważ:

  • nie ma stałych linków, np. gdy filtruję zasoby lub zmieniam kolejność sortowania;
  • nie ma łatwego sposobu filtrowania według statusu - na przykład zobacz wszystkie pody ze statusem „Oczekujący”;
  • obsługiwany jest tylko jeden klaster;
  • CRD nie są obsługiwane (ta funkcja jest w fazie rozwoju);
  • brak kolumn niestandardowych (takich jak kolumny oznaczone typem kubectl -L).

Widok operacyjny Kubernetes (widok kube-ops)

„Obserwator pulpitu nawigacyjnego systemu dla przestrzeni klastrowej K8”.

Ogłoszenie o Kubernetes Web View (oraz krótkie omówienie innych internetowych interfejsów użytkownika dla Kubernetes)

У Widok operacyjny Kubernetes Zupełnie inne podejście: to narzędzie pokazuje tylko węzły i pody klastrów przy użyciu WebGL, bez żadnych szczegółów obiektu tekstowego. Świetnie nadaje się do szybkiego przeglądu kondycji klastra (czy pody spadają?)*, ale nie nadaje się do opisanych powyżej przypadków użycia wsparcia i reakcji na incydenty.

* Notatka. przeł.: W tym sensie nasza wtyczka może Cię również zainteresować grafana-statusmapo czym szerzej pisaliśmy w ten artykuł.

Raport o zasobach Kubernetes (raport o zasobach kube)

„Zbieraj żądania zasobów podów i klastrów Kubernetes, porównuj je ze zużyciem zasobów i generuj statyczny kod HTML”.

Ogłoszenie o Kubernetes Web View (oraz krótkie omówienie innych internetowych interfejsów użytkownika dla Kubernetes)

Raport o zasobach Kubernetes generuje statyczne raporty HTML dotyczące wykorzystania zasobów i rozkładu kosztów pomiędzy zespołami/aplikacjami w klastrach. Raport jest w pewnym stopniu przydatny w przypadku wsparcia technicznego i reagowania na incydenty, ponieważ pozwala szybko znaleźć klaster, w którym wdrożono aplikację.

Notatka. przeł.: Usługa i narzędzie mogą być również przydatne do przeglądania informacji na temat alokacji zasobów i ich kosztów pomiędzy dostawcami usług w chmurze Kubecost, które recenzujemy niedawno opublikowany.

Oktant

„Rozszerzalna platforma internetowa dla programistów, zaprojektowana w celu lepszego zrozumienia złożoności klastrów Kubernetes”.

Ogłoszenie o Kubernetes Web View (oraz krótkie omówienie innych internetowych interfejsów użytkownika dla Kubernetes)

Oktant, stworzony przez VMware, to nowy produkt, o którym dowiedziałem się stosunkowo niedawno. Z jego pomocą wygodnie jest eksplorować klaster na lokalnej maszynie (są nawet wizualizacje), ale w ograniczonym stopniu porusza kwestie wsparcia i reakcji na incydenty. Wady Octanta:

  • Brak wyszukiwania klastrów.
  • Działa tylko na komputerze lokalnym (nie jest wdrażany w klastrze).
  • Nie można sortować/filtrować obiektów (obsługiwany jest tylko selektor etykiet).
  • Nie można określić kolumn niestandardowych.
  • Nie można wyświetlać obiektów według przestrzeni nazw.

Miałem też problemy ze stabilnością Octanta z klastrami Zalando: na niektórych CRD spadał.

Przedstawiamy widok internetowy Kubernetes

„kubectl dla Internetu”.

Ogłoszenie o Kubernetes Web View (oraz krótkie omówienie innych internetowych interfejsów użytkownika dla Kubernetes)

Po przeanalizowaniu dostępnych opcji interfejsu dla Kubernetesa zdecydowałem się stworzyć nowy: WebView Kubernetes. W końcu potrzebuję całej mocy kubectl w internecie, a mianowicie:

  • dostępność wszystkich operacji (tylko do odczytu), do których użytkownicy wolą używać kubectl;
  • wszystkie adresy URL muszą być trwałe i reprezentować stronę w jej oryginalnej formie, aby współpracownicy mogli je udostępniać i wykorzystywać w innych narzędziach;
  • wsparcie dla wszystkich obiektów Kubernetesa, co pozwoli Ci rozwiązać każdy rodzaj problemu;
  • listy zasobów powinny być możliwe do pobrania do dalszej pracy (w arkuszach kalkulacyjnych, narzędziach CLI, takich jak grep) i przechowywanie (na przykład na potrzeby sekcji zwłok);
  • obsługa wyboru zasobów według etykiety (podobnie jak kubectl get .. -l);
  • możliwość tworzenia połączonych list różnych typów zasobów (podobnie jak kubectl get all) w celu uzyskania wspólnego obrazu operacyjnego wśród współpracowników (na przykład podczas reakcji na incydent);
  • możliwość dodawania niestandardowych inteligentnych, głębokich linków do innych narzędzi, takich jak dashboardy, rejestratory, rejestry aplikacji itp. w celu ułatwienia rozwiązywania problemów/rozwiązywania błędów i reagowania na incydenty;
  • Frontend powinien być jak najprostszy (czysty HTML), aby uniknąć przypadkowych problemów, takich jak zamrożony JavaScript;
  • obsługa wielu klastrów w celu uproszczenia interakcji podczas zdalnego doradztwa (np. w celu zapamiętania tylko jednego adresu URL);
  • Jeśli to możliwe, należy uprościć analizę sytuacyjną (na przykład poprzez dodanie linków do pobierania zasobów dla wszystkich klastrów/przestrzeni nazw);
  • dodatkowe możliwości tworzenia elastycznych linków i wyróżniania informacji tekstowych, np. tak, aby można było wskazać współpracownikom konkretną sekcję w opisie zasobu (wiersz w YAML);
  • możliwość dostosowania do wymagań konkretnego klienta, np. umożliwienie tworzenia specjalnych szablonów wyświetlania dla CRD, własnych widoków tabel, zmiany stylów CSS;
  • narzędzia do dalszej eksploracji w wierszu poleceń (na przykład wyświetlanie pełnych poleceń kubectl, gotowy do kopiowania);

Poza zadaniami rozwiązanymi w Kubernetes Web View (bez bramek) pozostało:

  • abstrakcja obiektów Kubernetesa;
  • zarządzanie aplikacjami (na przykład zarządzanie wdrożeniami, wykresy Helma itp.);
  • operacje zapisu (należy wykonać za pomocą bezpiecznych narzędzi CI/CD i/lub GitOps);
  • piękny interfejs (JavaScript, motywy itp.);
  • wizualizacja (zob widok-kube-ops);
  • analiza kosztów (zob raport zasobów kube).

W jaki sposób Kubernetes Web View pomaga w zakresie wsparcia i reagowania na incydenty?

Wsparcie

  • Wszystkie linki są trwałe, co ułatwia wymianę informacji ze współpracownikami.
  • Możesz tworzyć Twoje pomysłyna przykład wyświetl wszystkie wdrożenia i pody z określoną etykietą w dwóch określonych klastrach (w łączu można określić kilka nazw klastrów i typów zasobów, oddzielając je przecinkami).
  • Możesz się odnieść określone linie w pliku YAML obiektu, wskazując potencjalne problemy w specyfikacji obiektu.

Ogłoszenie o Kubernetes Web View (oraz krótkie omówienie innych internetowych interfejsów użytkownika dla Kubernetes)
Szukaj według klastrów w Kubernetes Web View

Reagowania na incydenty

  • Wyszukiwanie globalne (wyszukiwanie globalne) umożliwia wyszukiwanie obiektów we wszystkich skupieniach.
  • Widoki listy może wyświetlić wszystkie obiekty o określonym stanie/kolumnie we wszystkich klastrach (np. musimy znaleźć wszystkie pody ze statusem „Oczekujące”).
  • Można pobrać wykazy obiektów w formacie wartości rozdzielanych tabulatorami (TSV) do późniejszej analizy.
  • Konfigurowalne linki zewnętrzne Umożliwia przełączanie do powiązanych pulpitów nawigacyjnych i innych narzędzi.

Ogłoszenie o Kubernetes Web View (oraz krótkie omówienie innych internetowych interfejsów użytkownika dla Kubernetes)
Kubernetes Web View: lista podów ze statusem „Oczekujące” we wszystkich klastrach

Jeśli chcesz wypróbować Kubernetes Web View, polecam sprawdzić dokumentacja lub spójrz demonstracja na żywo.

Oczywiście interfejs mógłby być lepszy, ale na razie Kubernetes Web View to narzędzie dla „zaawansowanych użytkowników”, którzy nie boją się ręcznego manipulowania ścieżkami URL, jeśli zajdzie taka potrzeba. Jeśli masz jakieś uwagi/dodatki/sugestie, skontaktuj się z nami ze mną na Twitterze!

W tym artykule przedstawiono krótką historię tła, która doprowadziła do powstania Kubernetes Web View. Więcej będzie! (Notatka. przeł.: Należy się ich spodziewać blogu autora.)

PSod tłumacza

Przeczytaj także na naszym blogu:

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

Dodaj komentarz