Oznámení Kubernetes Web View (a stručný přehled dalších webových uživatelských rozhraní pro Kubernetes)

Poznámka. přel.: Autorem původního materiálu je Henning Jacobs ze Zalanda. Vytvořil nové webové rozhraní pro práci s Kubernetes, které je umístěno jako „kubectl pro web“. Proč se objevil nový Open Source projekt a jaká kritéria nesplňovala stávající řešení - přečtěte si jeho článek.

Oznámení Kubernetes Web View (a stručný přehled dalších webových uživatelských rozhraní pro Kubernetes)

V tomto příspěvku přezkoumám různá open source webová rozhraní Kubernetes, vysvětlím své požadavky na univerzální uživatelské rozhraní a vysvětlím, proč jsem vyvinul Kubernetes WebView — rozhraní navržené tak, aby usnadnilo podporu a odstraňování problémů s více clustery najednou.

Případy užití

Ve společnosti Zalando obsluhujeme velký počet uživatelů Kubernetes (900+) a clusterů (100+). Existuje několik běžných případů použití, kterým by vyhrazený webový nástroj prospěl:

  1. komunikace s kolegy pro podporu;
  2. reagovat na incidenty a vyšetřovat jejich příčiny.

Podpora

Podle mých zkušeností vypadá komunikace podpory často takto:

— Pomoc, naše služba XYZ je nedostupná!
— Co vidíš, když vystupuješ kubectl describe ingress ...?

Nebo něco podobného pro CRD:

– Mám nějaký problém s identifikační službou...
— Co příkaz vytváří? kubectl describe platformcredentialsset ...?

Taková komunikace obvykle spočívá v zadávání různých variant příkazu kubectl za účelem identifikace problému. V důsledku toho jsou obě strany konverzace nuceny neustále přepínat mezi terminálem a webovým chatem a navíc pozorují jinou situaci.

Proto bych chtěl, aby webové rozhraní Kubernetes umožňovalo následující:

  • uživatelé mohli výměnné odkazy a pozorovat totéž;
  • pomohlo by vyhnout se lidským chybám v podpoře: například přihlášení do nesprávného clusteru na příkazovém řádku, překlepy v příkazech CLI atd.;
  • by umožnil vytvářet vlastní pohledy posílat kolegům, to znamená přidávat sloupce značek, zobrazovat mnoho typů zdrojů na jedné stránce;
  • V ideálním případě by vám tento webový nástroj měl umožňovat nastavení „hluboké“ odkazy na konkrétní sekce YAML (například upozornění na nesprávný parametr, který způsobuje selhání).

Odezva na incident a analýza

Reakce na incidenty v infrastruktuře vyžaduje situační povědomí, schopnost vyhodnotit dopad a hledat vzory v klastrech. Některé příklady ze života:

  • Kritická produkční služba má problémy a vy to potřebujete najít všechny prostředky Kubernetes podle názvu ve všech clusterechk odstraňování problémů;
  • uzly začnou padat při škálování a potřebujete najít všechny pody se stavem „Nevyřízeno“ ve všech shlucíchposoudit rozsah problému;
  • jednotliví uživatelé hlásí problém s DaemonSet nasazeným ve všech clusterech a potřebují to vyřešit Je problém totální?.

Moje standardní řešení v takových případech je něco jako for i in $clusters; do kubectl ...; done. Je zřejmé, že by mohl být vyvinut nástroj, který poskytuje podobné možnosti.

Stávající webová rozhraní Kubernetes

Open source svět webových rozhraní pro Kubernetes není příliš velký*, takže jsem se pokusil získat více informací pomocí X:

Oznámení Kubernetes Web View (a stručný přehled dalších webových uživatelských rozhraní pro Kubernetes)

*Moje vysvětlení pro omezený počet webových rozhraní pro Kubernetes: cloudové služby a dodavatelé Kubernetes obvykle nabízejí své vlastní frontendy, takže trh s „dobrým“ bezplatným uživatelským rozhraním Kubernetes je relativně malý.

Prostřednictvím tweetu, o kterém jsem se dozvěděl K8Dash, Kubernator и oktant. Podívejme se na ně a další existující Open Source řešení, pokusme se pochopit, co to je.

K8Dash

"K8Dash je nejjednodušší způsob, jak spravovat cluster Kubernetes."

Oznámení Kubernetes Web View (a stručný přehled dalších webových uživatelských rozhraní pro Kubernetes)

K8Dash Vypadá dobře a rychle se cítí, ale má řadu nevýhod pro případy použití uvedené výše:

  • Funguje pouze v rámci jednoho clusteru.
  • Řazení a filtrování jsou možné, ale nemají trvalé odkazy.
  • Neexistuje žádná podpora pro vlastní definice zdrojů (CRD).

Kubernator

„Kubernator je alternativní uživatelské rozhraní pro Kubernetes. Na rozdíl od řídicího panelu Kubernetes na vysoké úrovni poskytuje ovládání na nízké úrovni a vynikající viditelnost všech objektů v clusteru s možností vytvářet nové, upravovat je a řešit konflikty. Protože jde o zcela aplikaci na straně klienta (jako je kubectl), nevyžaduje žádný jiný backend než samotný server Kubernetes API a také respektuje pravidla přístupu ke clusteru.

Oznámení Kubernetes Web View (a stručný přehled dalších webových uživatelských rozhraní pro Kubernetes)

Toto je docela přesný popis Kubernator. Bohužel postrádá některé funkce:

  • Obsluhuje pouze jeden cluster.
  • Neexistuje žádný režim zobrazení seznamu (tj. nemůžete zobrazit všechny pody ve stavu „Čeká na vyřízení“).

Kubernetes Dashboard

„Kubernetes Dashboard je univerzální webové rozhraní pro clustery Kubernetes. Umožňuje uživatelům spravovat a odstraňovat problémy s aplikacemi běžícími v clusteru a také spravovat cluster samotný.“

Oznámení Kubernetes Web View (a stručný přehled dalších webových uživatelských rozhraní pro Kubernetes)

Bohužel, Kubernetes Dashboard opravdu nepomáhá s mými aktivitami podpory a reakce na incidenty, protože:

  • neexistují žádné trvalé odkazy, například když filtruji zdroje nebo měním pořadí řazení;
  • neexistuje jednoduchý způsob, jak filtrovat podle stavu – například zobrazit všechny pody se stavem „Nevyřízeno“;
  • je podporován pouze jeden cluster;
  • CRD nejsou podporovány (tato funkce je ve vývoji);
  • žádné vlastní sloupce (například sloupce označené podle typu kubectl -L).

Provozní pohled Kubernetes (kube-ops-view)

"System Dashboard Observer pro K8s Cluster Space."

Oznámení Kubernetes Web View (a stručný přehled dalších webových uživatelských rozhraní pro Kubernetes)

У Provozní pohled Kubernetes Zcela jiný přístup: tento nástroj zobrazuje pouze uzly clusteru a pody pomocí WebGL, bez jakýchkoli podrobností o textových objektech. Je to skvělé pro rychlý přehled o stavu clusteru (padají moduly?)*, ale nehodí se pro případy použití podpory a reakce na incidenty popsané výše.

* Poznámka. přel.: V tomto smyslu by vás mohl zajímat i náš plugin grafana-stavová mapa, o kterém jsme mluvili podrobněji v tento článek.

Zpráva o zdrojích Kubernetes (kube-resource-report)

„Shromažďujte požadavky na prostředky pod a Kubernetes clusteru, porovnejte je se spotřebou prostředků a generujte statické HTML.“

Oznámení Kubernetes Web View (a stručný přehled dalších webových uživatelských rozhraní pro Kubernetes)

Zpráva o zdrojích Kubernetes generuje statické HTML zprávy o využití zdrojů a rozdělení nákladů mezi týmy/aplikace v klastrech. Zpráva je poněkud užitečná pro podporu a reakci na incidenty, protože umožňuje rychle najít cluster, kde je aplikace nasazena.

Poznámka. přel.: Služba a nástroj mohou být užitečné také při prohlížení informací o alokaci zdrojů a jejich nákladech mezi poskytovateli cloudu Kubecost, kterou recenzujeme nedávno zveřejněné.

oktant

"Rozšiřitelná webová platforma pro vývojáře navržená tak, aby poskytovala lepší pochopení složitosti clusterů Kubernetes."

Oznámení Kubernetes Web View (a stručný přehled dalších webových uživatelských rozhraní pro Kubernetes)

oktant, vytvořený společností VMware, je nový produkt, o kterém jsem se dozvěděl relativně nedávno. S jeho pomocí je vhodné cluster prozkoumat na lokálním počítači (existují dokonce i vizualizace), ale problémy podpory a reakce na incidenty řeší jen omezeně. Nevýhody oktantu:

  • Žádné hledání clusteru.
  • Funguje pouze na místním počítači (nenasazuje se do clusteru).
  • Objekty nelze třídit/filtrovat (podporován je pouze selektor štítků).
  • Nemůžete zadat vlastní sloupce.
  • Objekty nelze vypisovat podle jmenného prostoru.

Také jsem měl problémy se stabilitou Octant s clustery Zalando: na některých CRD padal.

Představujeme Kubernetes Web View

"kubectl pro web".

Oznámení Kubernetes Web View (a stručný přehled dalších webových uživatelských rozhraní pro Kubernetes)

Po analýze dostupných možností rozhraní pro Kubernetes jsem se rozhodl vytvořit nové: Kubernetes WebView. Koneckonců, ve skutečnosti potřebuji jen všechnu sílu kubectl na webu, konkrétně:

  • dostupnost všech operací (pouze pro čtení), pro které uživatelé preferují používání kubectl;
  • všechny adresy URL musí být trvalé a reprezentovat stránku v původní podobě, aby je kolegové mohli sdílet a používat v jiných nástrojích;
  • podpora všech objektů Kubernetes, která vám umožní vyřešit jakýkoli typ problému;
  • seznamy zdrojů by měly být ke stažení pro další práci (v tabulkách, nástrojích CLI jako grep) a skladování (například pro postmortem);
  • podpora pro výběr zdrojů podle štítku (podobně jako kubectl get .. -l);
  • schopnost vytvářet kombinované seznamy různých typů zdrojů (podobně jako kubectl get all) získat společný provozní obraz mezi kolegy (například během reakce na incident);
  • možnost přidávat vlastní inteligentní přímé odkazy na další nástroje, jako jsou řídicí panely, loggery, registry aplikací atd. pro usnadnění odstraňování/řešení chyb a reakce na incidenty;
  • Frontend by měl být co nejjednodušší (čisté HTML), aby se předešlo náhodným problémům, jako je zamrzlý JavaScript;
  • podpora více clusterů pro zjednodušení interakce během vzdáleného konzultování (například pro zapamatování pouze jedné adresy URL);
  • Pokud je to možné, situační analýza by měla být zjednodušena (například pomocí odkazů na stažení zdrojů pro všechny clustery/jmenné prostory);
  • další příležitosti pro vytváření flexibilních odkazů a zvýrazňování textových informací, například, abyste mohli nasměrovat kolegy na konkrétní sekci v popisu zdroje (řádek v YAML);
  • možnost přizpůsobení požadavkům konkrétního klienta, například umožňuje vytvářet speciální šablony zobrazení pro CRD, vlastní zobrazení tabulek a měnit styly CSS;
  • nástroje pro další zkoumání na příkazovém řádku (například zobrazení úplných příkazů kubectl, připravené ke kopírování);

Kromě úkolů řešených v Kubernetes Web View (bez branek) zůstalo:

  • abstrakce objektů Kubernetes;
  • správa aplikací (například správa nasazení, grafy Helm atd.);
  • operace zápisu (musí být prováděny prostřednictvím bezpečných nástrojů CI/CD a/nebo GitOps);
  • krásné rozhraní (JavaScript, motivy atd.);
  • vizualizace (viz kube-ops-view);
  • analýza nákladů (viz kube-resource-report).

Jak Kubernetes Web View pomáhá s podporou a reakcí na incidenty?

Podpora

  • Všechny odkazy jsou trvalé, což usnadňuje výměnu informací s kolegy.
  • Můžete tvořit vaše nápady, například zobrazí všechna nasazení a moduly s konkrétním štítkem ve dvou konkrétních clusterech (v odkazu lze zadat několik názvů clusterů a typů prostředků oddělených čárkami).
  • Můžete odkazovat konkrétní řádky v souboru YAML objekt, označující potenciální problémy ve specifikaci objektu.

Oznámení Kubernetes Web View (a stručný přehled dalších webových uživatelských rozhraní pro Kubernetes)
Vyhledávání podle clusterů v Kubernetes Web View

Odezva na incident

  • Globální vyhledávání (globální vyhledávání) umožňuje vyhledávat objekty ve všech shlucích.
  • Zobrazení seznamu dokáže zobrazit všechny objekty s určitým stavem/sloupcem ve všech shlucích (například potřebujeme najít všechny pody se stavem „Pending“).
  • Seznamy objektů lze stáhnout ve formátu hodnot oddělených tabulátory (TSV) pro pozdější analýzu.
  • Přizpůsobitelné externí odkazy Umožňuje přepnout na související řídicí panely a další nástroje.

Oznámení Kubernetes Web View (a stručný přehled dalších webových uživatelských rozhraní pro Kubernetes)
Kubernetes Web View: seznam podů se stavem „Nevyřízeno“ ve všech clusterech

Pokud chcete Kubernetes Web View vyzkoušet, doporučuji se podívat dokumentace nebo se podívejte živé demo.

Rozhraní by samozřejmě mohlo být lepší, ale zatím je Kubernetes Web View nástrojem pro „pokročilé uživatele“, kteří se v případě potřeby neštítí manipulovat s cestami URL ručně. Pokud máte nějaké připomínky/dodatky/návrhy, kontaktujte prosím se mnou na Twitteru!

Tento článek je stručnou historií pozadí, které vedlo k vytvoření Kubernetes Web View. Další budou následovat! (Poznámka. přel.: Měli by se očekávat v autorský blog.)

PS od překladatele

Přečtěte si také na našem blogu:

Zdroj: www.habr.com

Přidat komentář