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.Pôvodným autorom je Henning Jacobs zo spoločnosti Zalando. Vytvoril nové webové rozhranie pre prácu s Kubernetes, označované ako „kubectl pre web“. Prečítajte si jeho článok a dozviete sa, prečo vznikol tento nový open source projekt a aké kritériá existujúce riešenia nespĺňali.

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 preskúmam rôzne webové rozhrania Kubernetes s otvoreným zdrojovým kódom, načrtnem svoje požiadavky na univerzálne používateľské rozhranie a vysvetlím, prečo som ho vyvinul. Kubernetes WebView — rozhranie určené na uľahčenie podpory a riešenia problémov vo viacerých klastroch naraz.

Prípady použitia

V spoločnosti Zalando obsluhujeme veľký počet používateľov Kubernetes (900+) a klastrov (100+). Existuje niekoľko typických prípadov použitia, ktoré by mohli výrazne profitovať zo špecializovaného webového nástroja:

  1. komunikácia s kolegami v rámci podpory;
  2. reagovanie na incidenty a vyšetrovanie ich príčin.

Podpora

Z mojej skúsenosti vyzerá komunikácia s podporou často takto:

— Pomoc, naša služba XYZ nie je k dispozícii!
- Čo vidíte, keď vystupujete kubectl describe ingress ...?

Alebo niečo podobné pre CRD:

— Mám nejaký problém s identifikačnou službou...
— A čo tím produkuje? kubectl describe platformcredentialsset ...?

Takáto komunikácia sa zvyčajne redukuje na zadávanie rôznych variácií príkazu. kubectl aby sa identifikoval problém. V dôsledku toho sú obe strany konverzácie nútené neustále prepínať medzi terminálom a webovým chatom a navyše vidia rôzne situácie.

Preto by sme chceli, aby webové rozhranie Kubernetes umožňovalo nasledovné:

  • používatelia by mohli výmena odkazov a pozorujte to isté;
  • by pomohlo vyhnúť sa ľudským chybám v rámci podpory: napríklad prihlásenie do nesprávneho klastra na príkazovom riadku, preklepy v príkazoch CLI atď.;
  • by umožnilo vytvárať si vlastné názory na odosielanie kolegom, teda pridávanie stĺpcov so štítkami, zobrazovanie viacerých typov zdrojov na jednej stránke;
  • V ideálnom prípade by vám tento webový nástroj mal umožniť nastaviť „hlboké“ odkazy na konkrétne sekcie YAML (napríklad poukázanie na nesprávny parameter, ktorý spôsobuje zlyhania).

Reakcia na incidenty a analýza

Reakcia na infraštruktúrne incidenty si vyžaduje situačné povedomie, schopnosť posúdiť dopad a schopnosť identifikovať vzorce v rámci klastrov. Niekoľko príkladov z reálneho sveta:

  • kritická produkčná služba má problémy a vy potrebujete Nájsť všetky zdroje Kubernetes podľa názvu vo všetkých klastrochriešiť problémy;
  • uzly začnú pri škálovaní klesať a vy musíte Nájsť všetky pody so stavom „Čakajúce“ 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 je potrebné ho prešetriť. Je problém univerzálny?.

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

Existujúce webové rozhrania Kubernetes

Svet webových rozhraní Kubernetes s otvoreným zdrojovým kódom nie je veľmi veľký*, preto som sa pokúsil zhromaždiť nejaké ďalšie informácie 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 obmedzeného počtu webových rozhraní pre Kubernetes: cloudové služby a dodávatelia Kubernetes zvyčajne ponúkajú vlastné frontendy, takže trh s „dobrými“ open-source používateľskými rozhraniami Kubernetes je relatívne malý.

Dozvedel som sa o tom z tweetu K8Dash, Kubernator и oktantPozrime sa na ne a ďalšie existujúce open source riešenia a pokúsime sa pochopiť, čo predstavujú.

K8Dash

„K8Dash je najjednoduchší spôsob, ako spravovať klaster 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á to dobre a je to rýchle, ale má to niekoľko nevýhod pre vyššie uvedené prípady použitia:

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

Kubernator

„Kubernator je alternatívne používateľské rozhranie pre Kubernetes. Na rozdiel od Kubernetes Dashboard na vysokej úrovni poskytuje kontrolu na nízkej úrovni a vynikajúci prehľad o všetkých objektoch v klastri s možnosťou vytvárať nové, upravovať existujúce a riešiť konflikty. Keďže ide o úplne klientsku aplikáciu (ako kubectl), nevyžaduje žiadny iný backend ako samotný Kubernetes API server a rešpektuje pravidlá prístupu do klastra.“

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'aBohužiaľ, chýbajú mu niektoré funkcie:

  • Obsluhuje iba jeden klaster.
  • Neexistuje režim zobrazenia zoznamu (t. j. nie je možné zobraziť všetky pody so stavom „Čaká sa“).

Dashboard Kubernetes

„Kubernetes Dashboard je univerzálne webové rozhranie pre klastre Kubernetes. Umožňuje používateľom spravovať a riešiť problémy s aplikáciami spustenými 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ôbec mi to nepomáha s aktivitami podpory a reakcie na incidenty, pretože:

  • neexistujú žiadne trvalé odkazy, napríklad keď filtrujem zdroje alebo zmením poradie zoradenia;
  • neexistuje jednoduchý spôsob filtrovania podľa stavu – napríklad na zobrazenie všetkých podov so stavom „Čaká sa“;
  • podporovaný je iba jeden klaster;
  • CRD súbory nie sú podporované (táto funkcia je vo vývoji);
  • nie sú k dispozícii žiadne vlastné stĺpce (napríklad stĺpce s popismi podľa typu kubectl -L).

Prevádzkové zobrazenie Kubernetes (kube-ops-view)

„Prístrojová doska systému pozorovania klastra K8s“.

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 na Kubernetes Úplne odlišný prístup: tento nástroj zobrazuje iba uzly a pody klastra pomocou WebGL bez akýchkoľvek textových podrobností o objektoch. Je skvelý na rýchly prehľad o stave klastra („Padajú pody?“)*, ale nie je vhodný pre prípady použitia v oblasti podpory a reakcie na incidenty opísané vyššie.

* Poznámka. preklad.V tomto ohľade by vás mohol zaujímať aj náš plugin grafana-statusmap, o ktorých sme podrobnejšie hovorili v v tomto článku.

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

Zbierajte požiadavky na zdroje podov a klastra Kubernetes, porovnávajte ich so spotrebou zdrojov a generujte statický HTML kód.

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. Táto správa je do istej miery užitočná pre podporu a reakciu na incidenty, pretože umožňuje rýchlo nájsť klaster, v ktorom je aplikácia nasadená.

Poznámka. preklad.Pri prezeraní informácií o alokácii zdrojov a ich nákladoch od poskytovateľov cloudových služieb môže byť táto služba a nástroj užitočný. Kubecost, ktoré si prejdeme nedávno publikované.

oktant

„Rozšíriteľná webová platforma pre vývojárov navrhnutá tak, aby poskytovala lepší prehľad o komplexnosti klastrov Kubernetes.“

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

oktantOctant, vytvorený spoločnosťou VMware, je nový produkt, o ktorom som sa dozvedel pomerne nedávno. Je vhodný na skúmanie klastra na lokálnom počítači (dokonca má aj vizualizácie), ale problémy s podporou a reakciou na incidenty rieši len v obmedzenej miere. Nevýhody Octantu:

  • Žiadne vyhľadávanie klastrov.
  • Funguje iba na lokálnom počítači (nie je nasadené v klastri).
  • Nie je možné triediť/filtrovať objekty (podporovaný je iba selektor označení).
  • Vlastné stĺpce nie je možné definovať.
  • Objekty nie je možné zobraziť podľa menného priestoru.

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

Predstavujeme webové zobrazenie Kubernetes

„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 preskúmaní dostupných možností rozhrania pre Kubernetes som sa rozhodol vytvoriť nové: Kubernetes WebViewPretože v podstate potrebujem všetku tú energiu kubectl na webe, konkrétne:

  • dostupnosť všetkých operácií (iba na čítanie), pre ktoré používatelia uprednostňujú kubectl;
  • Všetky URL adresy by mali byť trvalé a mali by reprezentovať stránku v jej pôvodnej podobe, aby ich kolegovia mohli zdieľať a používať v iných nástrojoch.
  • podpora všetkých objektov Kubernetes, ktorá vám umožní vyriešiť akýkoľvek typ problému;
  • zoznamy zdrojov by mali byť stiahnuteľné pre ďalšiu prácu (v tabuľkách, nástrojoch CLI ako grep) a uchovávanie (napríklad na účely posmrtných vyšetrení);
  • podpora výberu zdrojov podľa označení (podobne ako kubectl get .. -l);
  • možnosť 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ť pridania prispôsobiteľných „inteligentných“ priamych odkazov na iné nástroje, ako sú dashboardy, loggery, registre aplikácií atď., s cieľom uľahčiť riešenie problémov a reakciu na incidenty;
  • Frontend by mal byť čo najjednoduchší (čistý HTML), aby sa predišlo náhodným problémom, ako je zasekávanie JavaScriptu;
  • podpora viacerých klastrov na zjednodušenie interakcie počas vzdialených konzultácií (napríklad na zapamätanie si iba jednej URL adresy);
  • Ak je to možné, situačná analýza by sa mala zjednodušiť (napr. s odkazmi na stiahnutie zdrojov vo všetkých klastroch/menných priestoroch);
  • ďalšie možnosti na vytváranie flexibilných odkazov a zvýrazňovanie textových informácií, napríklad aby kolegovia mohli poukázať na konkrétnu sekciu v popise zdroja (reťazec v YAML);
  • možnosť prispôsobenia požiadavkám konkrétneho klienta, napríklad možnosť vytvárať špeciálne šablóny zobrazenia pre CRD, vlastné tabuľkové zobrazenia 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);

Úlohy nad rámec tých, ktoré sa riešia v Kubernetes Web View (ne-góly) zostalo:

  • abstrakcia objektov Kubernetes;
  • správa aplikácií (napr. správa nasadení, Helm grafov atď.);
  • operácie zápisu (musia sa vykonávať prostredníctvom zabezpečených nástrojov CI/CD a/alebo GitOps);
  • krásne rozhranie (JavaScript, témy atď.);
  • vizualizácie (pozri kube-ops-view);
  • analýza nákladov (pozri kube-resource-report).

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

Podpora

  • Všetky odkazy sú trvalé, čo uľahčuje výmenu informácií s kolegami.
  • Môžete vytvoriť ich nápady, napríklad na zobrazenie všetkých nasadení a podov s konkrétnym označením v dvoch konkrétnych klastroch (v odkaze je možné zadať viacero názvov klastrov a typov zdrojov oddelených čiarkami).
  • Môžete sa odvolať na konkrétne riadky v súbore YAML objekt, čo naznačuje potenciálne problémy 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 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 klastroch.
  • Zobrazenia zoznamu dokáže zobraziť všetky objekty s určitým stavom/stĺpcom vo všetkých klastroch (napríklad potrebujeme nájsť všetky pody so stavom „Čaká sa na spracovanie“).
  • Zoznamy objektov si môžete stiahnuť vo formáte hodnôt oddelených tabulátormi (TSV) pre ďalšiu analýzu.
  • Prispôsobiteľné externé odkazy umožňujú vám prepínať na relevantné dashboardy 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)
Webové zobrazenie Kubernetes: Zoznam podov so stavom „Čaká sa na spracovanie“ vo všetkých klastroch

Ak si chcete vyskúšať Kubernetes Web View, odporúčam vám pozrieť si dokumentáciu alebo sa pozrite na živá demo verzia.

Samozrejme, rozhranie by mohlo byť lepšie, ale zatiaľ je Kubernetes Web View nástrojom pre „pokročilých používateľov“, ktorí sa neboja manuálne manipulovať s URL cestami, ak je to potrebné. Ak máte akékoľvek komentáre, doplnenia alebo návrhy, kontaktujte nás. Sledujte ma na Twitteri!

Tento článok je stručným prehľadom pozadia Kubernetes Web View. Ďalšie informácie budú čoskoro k dispozícii! (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

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster