Oznámenie o Kubernetes Web View (a krátky prehľad ďalších webových používateľských rozhraní pre Kubernetes)

Poznámka. preklad.: Autorom pôvodného materiálu je Henning Jacobs zo Zalanda. Vytvoril nové webové rozhranie pre prácu s Kubernetes, ktoré je umiestnené ako „kubectl pre web“. Prečo sa objavil nový Open Source projekt a aké kritériá nespĺňali existujúce riešenia - prečítajte si jeho článok.

Oznámenie o Kubernetes Web View (a krátky prehľad ďalších webových používateľských rozhraní pre Kubernetes)

V tomto príspevku skúmam rôzne webové rozhrania Kubernetes s otvoreným zdrojom, uvádzam svoje požiadavky na univerzálne používateľské rozhranie a vysvetľujem, prečo som vyvinul Kubernetes WebView — rozhranie navrhnuté tak, aby uľahčilo podporu a riešenie problémov viacerých klastrov naraz.

Prípady použitia

V Zalando slúžime veľkému počtu používateľov Kubernetes (900+) a klastrov (100+). Existuje niekoľko bežných prípadov použitia, ktorým by vyhradený webový nástroj prospel:

  1. komunikácia s kolegami na podporu;
  2. reagovať na incidenty a vyšetrovať ich príčiny.

Podpora

Podľa mojich skúseností komunikácia podpory často vyzerá takto:

— Pomoc, naša služba XYZ je nedostupná!
— Čo vidíš, keď vystupuješ kubectl describe ingress ...?

Alebo niečo podobné pre CRD:

- Mám problém s identifikačnou službou...
— Čo vytvára príkaz? kubectl describe platformcredentialsset ...?

Takáto komunikácia zvyčajne spočíva v zadávaní rôznych variácií príkazu kubectl s cieľom identifikovať problém. Výsledkom je, že obe strany konverzácie sú nútené neustále prepínať medzi terminálom a webovým chatom a navyše pozorujú odlišnú situáciu.

Preto by som chcel, aby webové rozhranie Kubernetes umožňovalo nasledovné:

  • používatelia mohli výmenné odkazy a pozorovať to isté;
  • by pomohlo vyhnúť sa ľudským chybám v podpore: napríklad prihlásenie do nesprávneho klastra na príkazovom riadku, preklepy v príkazoch CLI atď.;
  • by umožnil vytvárať si vlastné názory posielať kolegom, to znamená pridávať stĺpce značiek, zobrazovať veľa typov zdrojov na jednej stránke;
  • V ideálnom prípade by vám tento webový nástroj mal umožňovať nastavenie „hlboké“ odkazy na konkrétne sekcie YAML (napríklad poukázanie na nesprávny parameter, ktorý spôsobuje poruchy).

Reakcia na incident a analýza

Reakcia na incidenty v infraštruktúre si vyžaduje situačné povedomie, schopnosť posúdiť vplyv a hľadať vzory v klastroch. Niekoľko príkladov zo skutočného života:

  • Kritická produkčná služba má problémy a vy to potrebujete nájsť všetky zdroje Kubernetes podľa názvu vo všetkých klastrochodstraňovať problémy;
  • uzly začnú padať pri škálovaní a potrebujete nájdite všetky moduly so stavom „Nevybavené“ vo všetkých klastrochposúdiť rozsah problému;
  • jednotliví používatelia hlásia problém s DaemonSet nasadeným vo všetkých klastroch a potrebujú prísť na to Je problém úplný?.

Moje štandardné riešenie v takýchto prípadoch je niečo ako for i in $clusters; do kubectl ...; done. Je zrejmé, že by sa dal vyvinúť nástroj, ktorý by poskytoval podobné možnosti.

Existujúce webové rozhrania Kubernetes

Svet otvorených zdrojov webových rozhraní pre Kubernetes nie je príliš veľký*, preto som sa pokúsil získať viac informácií pomocou Twitter:

Oznámenie o Kubernetes Web View (a krátky prehľad ďalších webových používateľských rozhraní pre Kubernetes)

*Moje vysvetlenie pre obmedzený počet webových rozhraní pre Kubernetes: cloudové služby a predajcovia Kubernetes zvyčajne ponúkajú svoje vlastné rozhrania, takže trh s „dobrým“ bezplatným používateľským rozhraním Kubernetes je relatívne malý.

Prostredníctvom tweetu, o ktorom som sa dozvedel K8Dash, Kubernator и oktant. Pozrime sa na ne a ďalšie existujúce Open Source riešenia, skúsme pochopiť, čo sú zač.

K8Dash

„K8Dash je najjednoduchší spôsob správy klastra Kubernetes.“

Oznámenie o Kubernetes Web View (a krátky prehľad ďalších webových používateľských rozhraní pre Kubernetes)

K8Dash Vyzerá dobre a rýchlo, ale má niekoľko nevýhod pre prípady použitia uvedené vyššie:

  • Funguje iba v rámci hraníc jedného klastra.
  • Triedenie a filtrovanie sú možné, ale nemajú trvalé odkazy.
  • Neexistuje žiadna podpora pre definície vlastných zdrojov (CRD).

Kubernator

„Kubernator je alternatívne používateľské rozhranie pre Kubernetes. Na rozdiel od panela Kubernetes Dashboard na vysokej úrovni poskytuje ovládanie na nízkej úrovni a vynikajúcu viditeľnosť všetkých objektov v klastri s možnosťou vytvárať nové, upravovať ich a riešiť konflikty. Keďže ide výlučne o aplikáciu na strane klienta (ako kubectl), nevyžaduje žiadny iný backend ako samotný server Kubernetes API a tiež rešpektuje pravidlá prístupu ku klastrom.

Oznámenie o Kubernetes Web View (a krátky prehľad ďalších webových používateľských rozhraní pre Kubernetes)

Toto je celkom presný popis Kubernator. Bohužiaľ mu chýbajú niektoré funkcie:

  • Obsluhuje iba jeden klaster.
  • Neexistuje režim zobrazenia zoznamu (t. j. nemôžete zobraziť všetky moduly so stavom „Nevybavené“).

Dashboard Kubernetes

„Kubernetes Dashboard je univerzálne webové rozhranie pre klastre Kubernetes. Umožňuje používateľom spravovať a odstraňovať problémy s aplikáciami bežiacimi v klastri, ako aj spravovať samotný klaster.“

Oznámenie o Kubernetes Web View (a krátky prehľad ďalších webových používateľských rozhraní pre Kubernetes)

Bohužiaľ, Dashboard Kubernetes v skutočnosti mi nepomôže s podporou a aktivitami v reakcii na incidenty, pretože:

  • neexistujú žiadne trvalé odkazy, napríklad keď filtrujem zdroje alebo mením poradie zoradenia;
  • neexistuje jednoduchý spôsob filtrovania podľa stavu – napríklad zobraziť všetky moduly so stavom „Čaká“;
  • je podporovaný iba jeden klaster;
  • CRD nie sú podporované (táto funkcia je vo vývoji);
  • žiadne vlastné stĺpce (napríklad stĺpce označené podľa typu kubectl -L).

Prevádzkový pohľad Kubernetes (kube-ops-view)

"System Dashboard Observer for K8s Cluster Space."

Oznámenie o Kubernetes Web View (a krátky prehľad ďalších webových používateľských rozhraní pre Kubernetes)

У Prevádzkový pohľad Kubernetes Úplne iný prístup: tento nástroj zobrazuje iba uzly klastrov a pody pomocou WebGL bez akýchkoľvek podrobností o textových objektoch. Je to skvelé pre rýchly prehľad o stave klastra (padajú moduly?)*, ale nie je vhodné pre prípady použitia podpory a reakcie na incidenty opísané vyššie.

* Poznámka. preklad.: V tomto zmysle by vás mohol zaujímať aj náš plugin grafana-statusmap, o ktorej sme podrobnejšie hovorili v v tomto článku.

Správa o zdrojoch Kubernetes (kube-resource-report)

„Zbierajte požiadavky na prostriedky pod a Kubernetes klastra, porovnávajte ich so spotrebou prostriedkov a generujte statické HTML.“

Oznámenie o Kubernetes Web View (a krátky prehľad ďalších webových používateľských rozhraní pre Kubernetes)

Správa o zdrojoch Kubernetes generuje statické HTML správy o využívaní zdrojov a rozdelení nákladov medzi tímy/aplikácie v klastroch. Správa je trochu užitočná pre podporu a reakciu na incidenty, pretože vám umožňuje rýchlo nájsť klaster, v ktorom je aplikácia nasadená.

Poznámka. preklad.: Služba a nástroj môžu byť užitočné aj pri prezeraní informácií o rozdelení zdrojov a ich nákladoch medzi poskytovateľov cloudu Kubecost, ktorý recenzujeme nedávno zverejnené.

oktant

"Rozšíriteľná webová platforma pre vývojárov navrhnutá tak, aby poskytovala lepšie pochopenie zložitosti klastrov Kubernetes."

Oznámenie o Kubernetes Web View (a krátky prehľad ďalších webových používateľských rozhraní pre Kubernetes)

oktant, vytvorený spoločnosťou VMware, je nový produkt, o ktorom som sa dozvedel relatívne nedávno. S jeho pomocou je vhodné preskúmať klaster na lokálnom stroji (existujú dokonca aj vizualizácie), ale problémy podpory a reakcie na incidenty rieši len v obmedzenej miere. Nevýhody oktantu:

  • Žiadne vyhľadávanie klastrov.
  • Funguje iba na lokálnom počítači (nenasadzuje sa do klastra).
  • Nie je možné triediť/filtrovať objekty (podporovaný je iba selektor štítkov).
  • Nemôžete zadať vlastné stĺpce.
  • Objekty nemôžete uvádzať podľa priestoru názvov.

Tiež som mal problémy so stabilitou Octant s klastrami Zalando: na niektorých CRD padal.

Predstavujeme Kubernetes Web View

"kubectl pre web".

Oznámenie o Kubernetes Web View (a krátky prehľad ďalších webových používateľských rozhraní pre Kubernetes)

Po analýze dostupných možností rozhrania pre Kubernetes som sa rozhodol vytvoriť nové: Kubernetes WebView. Koniec koncov, v skutočnosti potrebujem len všetku silu kubectl na webe, konkrétne:

  • dostupnosť všetkých operácií (len na čítanie), na ktoré používatelia uprednostňujú používanie kubectl;
  • všetky adresy URL musia byť trvalé a reprezentovať stránku v jej pôvodnej podobe, aby ich kolegovia mohli zdieľať a používať v iných nástrojoch;
  • podpora pre všetky objekty Kubernetes, čo vám umožní vyriešiť akýkoľvek typ problému;
  • zoznamy zdrojov by sa mali dať stiahnuť pre ďalšiu prácu (v tabuľkách, nástrojoch CLI ako napr grep) a skladovanie (napríklad pre postmortem);
  • podpora výberu zdrojov podľa označenia (podobne ako kubectl get .. -l);
  • schopnosť vytvárať kombinované zoznamy rôznych typov zdrojov (podobne ako kubectl get all) získať spoločný operačný obraz medzi kolegami (napríklad počas reakcie na incident);
  • možnosť pridávať vlastné inteligentné priame odkazy do iných nástrojov, ako sú dashboardy, loggery, registre aplikácií atď. na uľahčenie odstraňovania/riešenia chýb a reagovania na incidenty;
  • Frontend by mal byť čo najjednoduchší (čisté HTML), aby sa predišlo náhodným problémom, ako je napríklad zamrznutý JavaScript;
  • podpora viacerých klastrov na zjednodušenie interakcie počas vzdialeného poradenstva (napríklad na zapamätanie si iba jednej adresy URL);
  • Ak je to možné, situačná analýza by sa mala zjednodušiť (napríklad pomocou odkazov na sťahovanie zdrojov pre všetky klastre/menné priestory);
  • ďalšie príležitosti na vytváranie flexibilných odkazov a zvýraznenie textových informácií, napríklad, aby ste mohli nasmerovať kolegov na konkrétnu sekciu v popise zdroja (riadok v YAML);
  • schopnosť prispôsobiť sa požiadavkám konkrétneho klienta, napríklad umožňuje vytvárať špeciálne šablóny zobrazenia pre CRD, vlastné zobrazenia tabuliek a meniť štýly CSS;
  • nástroje na ďalšie skúmanie v príkazovom riadku (napríklad zobrazenie úplných príkazov kubectl, pripravené na kopírovanie);

Okrem úloh vyriešených v Kubernetes Web View (bez gólov) zostal:

  • abstrakcia objektov Kubernetes;
  • správa aplikácií (napríklad správa nasadenia, diagramy Helm atď.);
  • operácie zápisu (musia byť vykonané prostredníctvom bezpečných nástrojov CI/CD a/alebo GitOps);
  • krásne rozhranie (JavaScript, témy atď.);
  • vizualizácia (viď kube-ops-view);
  • analýza nákladov (viď kube-resource-report).

Ako Kubernetes Web View pomáha s podporou a reakciou na incidenty?

Podpora

  • Všetky odkazy sú trvalé, čo uľahčuje výmenu informácií s kolegami.
  • Môžete vytvárať vaše nápady, napríklad zobraziť všetky nasadenia a moduly so špecifickým označením v dvoch špecifických klastroch (v odkaze možno zadať niekoľko názvov klastrov a typov prostriedkov oddelených čiarkami).
  • Môžete sa odvolávať na konkrétne riadky v súbore YAML s uvedením možných problémov v špecifikácii objektu.

Oznámenie o Kubernetes Web View (a krátky prehľad ďalších webových používateľských rozhraní pre Kubernetes)
Vyhľadávanie podľa klastrov v Kubernetes Web View

Reakcia na incident

  • Globálne vyhľadávanie (globálne vyhľadávanie) umožňuje vyhľadávať objekty vo všetkých zhlukoch.
  • Zobrazenia zoznamu dokáže zobraziť všetky objekty s určitým stavom/stĺpcom vo všetkých klastroch (napr. potrebujeme nájsť všetky pody so stavom „Čaká“).
  • Zoznamy objektov je možné stiahnuť vo formáte hodnôt oddelených tabuľkami (TSV) na neskoršiu analýzu.
  • Prispôsobiteľné externé odkazy Umožňuje vám prepnúť na súvisiace ovládacie panely a ďalšie nástroje.

Oznámenie o Kubernetes Web View (a krátky prehľad ďalších webových používateľských rozhraní pre Kubernetes)
Kubernetes Web View: zoznam modulov so stavom „Čaká“ vo všetkých klastroch

Ak chcete vyskúšať Kubernetes Web View, odporúčam vyskúšať dokumentáciu alebo sa pozrite živé demo.

Rozhranie by samozrejme mohlo byť lepšie, ale zatiaľ je Kubernetes Web View nástrojom pre „pokročilých používateľov“, ktorí sa v prípade potreby neštítia ručne manipulovať s cestami URL. Ak máte nejaké pripomienky/doplnky/návrhy, kontaktujte nás so mnou na Twitteri!

Tento článok je stručnou históriou pozadia, ktoré viedlo k vytvoreniu Kubernetes Web View. Ďalšie budú nasledovať! (Poznámka. preklad.: Mali by sa očakávať v blog autora.)

PS od prekladateľa

Prečítajte si aj na našom blogu:

Zdroj: hab.com

Pridať komentár