Najava Kubernetes Web Viewa (i kratak pregled drugih web korisničkih sučelja za Kubernetes)

Bilješka. transl.: Autor originalnog materijala je Henning Jacobs iz Zalanda. Napravio je novi web interfejs za rad sa Kubernetesom, koji je pozicioniran kao “kubectl za web”. Zašto se pojavio novi Open Source projekat i koje kriterijume nisu zadovoljila postojeća rešenja - pročitajte u njegovom članku.

Najava Kubernetes Web Viewa (i kratak pregled drugih web korisničkih sučelja za Kubernetes)

U ovom postu pregledam različite Kubernetes web sučelja otvorenog koda, izlažem svoje zahtjeve za univerzalno korisničko sučelje i objašnjavam zašto sam razvio Kubernetes WebView — interfejs dizajniran da olakša podršku i rešavanje problema sa više klastera odjednom.

Slučajevi upotrebe

U Zalandu opslužujemo veliki broj korisnika Kubernetesa (900+) i klastera (100+). Postoji nekoliko uobičajenih slučajeva upotrebe koji bi imali koristi od namjenskog web alata:

  1. komunikacija sa kolegama radi podrške;
  2. reagovanje na incidente i istraživanje njihovih uzroka.

podrška

Prema mom iskustvu, komunikacija podrške često izgleda ovako:

— Pomoć, naša usluga XYZ je nedostupna!
— Šta vidite kada nastupate kubectl describe ingress ...?

Ili nešto slično za CRD:

— Imam problem sa službom identifikacije...
— Šta naredba proizvodi? kubectl describe platformcredentialsset ...?

Takva komunikacija se obično svodi na unos različitih varijacija naredbe kubectl kako bi se identifikovao problem. Kao rezultat toga, obje strane u razgovoru su prisiljene da se stalno prebacuju između terminala i web chata, plus promatraju drugačiju situaciju.

Stoga bih želio da Kubernetes web frontend omogući sljedeće:

  • korisnici bi mogli razmeni linkove i posmatrati istu stvar;
  • bi pomoglo izbegavajte ljudske greške u podršci: na primjer, prijavljivanje u pogrešan klaster na komandnoj liniji, greške u kucanju u CLI komandama, itd.;
  • bi dozvolio generirajte vlastite poglede slati kolegama, odnosno dodati kolone oznaka, prikazati mnoge vrste resursa na jednoj stranici;
  • U idealnom slučaju, ovaj web alat bi vam trebao omogućiti postavljanje "duboke" veze do određenih dijelova YAML-a (na primjer, ukazivanje na neispravan parametar koji uzrokuje kvarove).

Odgovor na incident i analiza

Odgovor na infrastrukturne incidente zahtijeva svijest o situaciji, sposobnost procjene uticaja i traženja obrazaca u klasterima. Neki primjeri iz stvarnog života:

  • Kritična proizvodna služba ima problema i to morate pronađite sve Kubernetes resurse po imenu u svim klasterimaza rješavanje problema;
  • čvorovi počinju da padaju prilikom skaliranja i trebate pronađite sve podove sa statusom "Na čekanju" u svim klasterimaprocijeniti obim problema;
  • pojedinačni korisnici prijavljuju problem sa DaemonSet-om koji je raspoređen u svim klasterima i moraju to otkriti Da li je problem totalan?.

Moje standardno rješenje u takvim slučajevima je nešto poput for i in $clusters; do kubectl ...; done. Očigledno je moguće razviti alat koji pruža slične mogućnosti.

Postojeća Kubernetes web sučelja

Svijet otvorenog koda web interfejsa za Kubernetes nije baš velik*, pa sam pokušao da prikupim više informacija koristeći cvrkut:

Najava Kubernetes Web Viewa (i kratak pregled drugih web korisničkih sučelja za Kubernetes)

*Moje objašnjenje za ograničen broj veb interfejsa za Kubernetes: usluge u oblaku i dobavljači Kubernetesa obično nude svoje frontende, tako da je tržište za „dobre“ besplatne Kubernetes korisničko sučelje relativno malo.

Kroz tvit za koji sam saznao K8Dash, Kubernator и Oktant. Pogledajmo ih i druga postojeća rješenja otvorenog koda, pokušajmo razumjeti šta su.

K8Dash

“K8Dash je najjednostavniji način upravljanja Kubernetes klasterom.”

Najava Kubernetes Web Viewa (i kratak pregled drugih web korisničkih sučelja za Kubernetes)

K8Dash Izgleda dobro i brzo se osjeća, ali ima niz nedostataka za gore navedene slučajeve:

  • Radi samo unutar granica jednog klastera.
  • Sortiranje i filtriranje su mogući, ali nemaju stalne veze.
  • Ne postoji podrška za prilagođene definicije resursa (CRD).

Kubernator

“Kubernator je alternativno korisničko sučelje za Kubernetes. Za razliku od Kubernetes Dashboard-a na visokom nivou, on pruža kontrolu niskog nivoa i odličnu vidljivost svih objekata u klasteru uz mogućnost kreiranja novih, njihovog uređivanja i rješavanja sukoba. Budući da je u potpunosti aplikacija na strani klijenta (kao kubectl), ne zahtijeva nikakav backend osim samog Kubernetes API servera, a također poštuje pravila pristupa klasteru.”

Najava Kubernetes Web Viewa (i kratak pregled drugih web korisničkih sučelja za Kubernetes)

Ovo je prilično tačan opis Kubernator. Nažalost, nedostaju mu neke karakteristike:

  • Opslužuje samo jedan klaster.
  • Ne postoji način prikaza liste (tj. ne možete prikazati sve podove sa statusom "Na čekanju").

Kubernetes nadzorna ploča

„Kubernetes Dashboard je univerzalni web interfejs za Kubernetes klastere. Omogućava korisnicima da upravljaju i rješavaju probleme s aplikacijama koje rade u klasteru, kao i da upravljaju samim klasterom.”

Najava Kubernetes Web Viewa (i kratak pregled drugih web korisničkih sučelja za Kubernetes)

Nažalost, Kubernetes nadzorna ploča ne pomaže baš s mojim aktivnostima podrške i odgovora na incidente jer:

  • nema trajnih veza, na primjer kada filtriram resurse ili promijenim redoslijed sortiranja;
  • ne postoji jednostavan način filtriranja prema statusu - na primjer, pogledajte sve podove sa statusom „Na čekanju“;
  • samo jedan klaster je podržan;
  • CRD-ovi nisu podržani (ova karakteristika je u razvoju);
  • nema prilagođenih kolona (kao što su kolone označene po tipu kubectl -L).

Kubernetes operativni prikaz (kube-ops-view)

"System Dashboard Observer za K8s Cluster Space."

Najava Kubernetes Web Viewa (i kratak pregled drugih web korisničkih sučelja za Kubernetes)

У Kubernetes operativni prikaz Potpuno drugačiji pristup: ovaj alat prikazuje samo čvorove klastera i podove koristeći WebGL, bez ikakvih detalja o tekstualnim objektima. Odličan je za brzi pregled zdravlja klastera (padaju li mahune?)*, ali nije pogodan za gore opisane slučajeve podrške i odgovora na incidente.

* Bilješka. transl.: U tom smislu, možda ćete biti zainteresirani i za naš dodatak grafana-statusmap, o čemu smo detaljnije govorili u ovaj članak.

Kubernetes izvještaj o resursima (kube-resource-report)

“Prikupite zahtjeve za resurse pod i Kubernetes klastera, usporedite ih s potrošnjom resursa i generirajte statički HTML.”

Najava Kubernetes Web Viewa (i kratak pregled drugih web korisničkih sučelja za Kubernetes)

Izvještaj o Kubernetes resursima generira statičke HTML izvještaje o korištenju resursa i raspodjeli troškova među timovima/aplikacijama u klasterima. Izvještaj je donekle koristan za podršku i odgovor na incidente jer vam omogućava da brzo pronađete klaster u kojem je aplikacija raspoređena.

Bilješka. transl.: Usluga i alat također mogu biti korisni u pregledu informacija o raspodjeli resursa i njihovim troškovima među dobavljačima u oblaku Kubecost, koje pregledamo nedavno objavljeno.

Oktant

"Proširiva web platforma za programere dizajnirana da pruži bolje razumijevanje složenosti Kubernetes klastera."

Najava Kubernetes Web Viewa (i kratak pregled drugih web korisničkih sučelja za Kubernetes)

Oktant, koji je kreirao VMware, novi je proizvod za koji sam naučio relativno nedavno. Uz njegovu pomoć, zgodno je istražiti klaster na lokalnoj mašini (postoje čak i vizualizacije), ali rješava pitanja podrške i odgovora na incident samo u ograničenoj mjeri. Nedostaci oktanta:

  • Nema pretraživanja klastera.
  • Radi samo na lokalnoj mašini (ne postavlja se u klaster).
  • Nije moguće sortirati/filtrirati objekte (podržan je samo selektor oznaka).
  • Ne možete specificirati prilagođene stupce.
  • Ne možete navesti objekte po imenskom prostoru.

Takođe sam imao problema sa stabilnošću Octanta sa Zalando klasterima: na nekim CRD-ovima padao je.

Predstavljamo Kubernetes Web View

"kubectl za web".

Najava Kubernetes Web Viewa (i kratak pregled drugih web korisničkih sučelja za Kubernetes)

Nakon analize dostupnih opcija interfejsa za Kubernetes, odlučio sam da napravim novu: Kubernetes WebView. Uostalom, u stvari, samo mi treba sva moć kubectl na webu, i to:

  • dostupnost svih (samo za čitanje) operacija za koje korisnici preferiraju da koriste kubectl;
  • svi URL-ovi moraju biti trajni i predstavljati stranicu u izvornom obliku kako bi ih kolege mogli dijeliti i koristiti u drugim alatima;
  • podrška za sve Kubernetes objekte, što će vam omogućiti da riješite bilo koju vrstu problema;
  • liste resursa treba da se preuzimaju za dalji rad (u tabelama, CLI alatima kao što su grep) i skladištenje (na primjer, za obdukcije);
  • podrška za odabir resursa prema oznaci (slično kao kubectl get .. -l);
  • mogućnost kreiranja kombinovanih lista različitih vrsta resursa (slično kao kubectl get all) da se dobije zajednička operativna slika među kolegama (na primjer, tokom reagovanja na incident);
  • mogućnost dodavanja prilagođenih pametnih dubokih veza na druge alate kao što su nadzorne ploče, logeri, registri aplikacija itd. olakšati otklanjanje problema/rešavanje grešaka i reagovanje na incidente;
  • Frontend bi trebao biti što jednostavniji (čisti HTML) kako bi se izbjegli slučajni problemi, kao što je zamrznuti JavaScript;
  • podrška za više klastera kako bi se pojednostavila interakcija tokom daljinskog savjetovanja (na primjer, da se zapamti samo jedan URL);
  • Ako je moguće, situacionu analizu treba pojednostaviti (na primjer, sa linkovima za preuzimanje resursa za sve klastere/imenske prostore);
  • dodatne mogućnosti za kreiranje fleksibilnih veza i isticanje tekstualnih informacija, na primjer, tako da možete uputiti kolege na određeni odjeljak u opisu resursa (red u YAML-u);
  • mogućnost prilagođavanja zahtjevima određenog klijenta, na primjer, omogućavajući vam da kreirate posebne predloške prikaza za CRD-ove, vlastite prikaze tablice i mijenjate CSS stilove;
  • alati za dalje istraživanje na komandnoj liniji (na primjer, prikazivanje potpunih komandi kubectl, spreman za kopiranje);

Osim zadataka riješenih u Kubernetes Web View-u (ne-golovi) ostao:

  • apstrakcija Kubernetes objekata;
  • upravljanje aplikacijama (na primjer, upravljanje implementacijom, Helm grafikoni, itd.);
  • operacije pisanja (mora se obaviti putem sigurnih CI/CD i/ili GitOps alata);
  • prekrasan interfejs (JavaScript, teme, itd.);
  • vizualizacija (vidi kube-ops-view);
  • analiza troškova (vidi kube-resource-report).

Kako Kubernetes Web View pomaže u podršci i odgovoru na incidente?

podrška

  • Svi linkovi su trajni, što olakšava razmjenu informacija sa kolegama.
  • Možete kreirati vaše ideje, na primjer, prikazuje sve implementacije i module sa određenom oznakom u dva specifična klastera (nekoliko naziva klastera i tipova resursa može se navesti u vezi, odvojeno zarezima).
  • Možete se pozvati na određene linije u YAML datoteci objekt, što ukazuje na potencijalne probleme u specifikaciji objekta.

Najava Kubernetes Web Viewa (i kratak pregled drugih web korisničkih sučelja za Kubernetes)
Pretražujte po klasterima u Kubernetes Web Viewu

Incident Response

  • Globalna pretraga (globalna pretraga) omogućava vam da tražite objekte u svim klasterima.
  • List Views može prikazati sve objekte sa određenim stanjem/kolona u svim klasterima (na primjer, moramo pronaći sve podove sa statusom “Na čekanju”).
  • Liste objekata se mogu preuzeti u formatu vrijednosti odvojenih tabulatorima (TSV) za kasniju analizu.
  • Prilagodljive vanjske veze Omogućava vam da se prebacite na povezane kontrolne ploče i druge alate.

Najava Kubernetes Web Viewa (i kratak pregled drugih web korisničkih sučelja za Kubernetes)
Kubernetes Web View: lista podova sa statusom „Na čekanju“ u svim klasterima

Ako želite isprobati Kubernetes Web View, preporučujem da provjerite dokumentaciju ili pogledaj live demo.

Naravno, interfejs bi mogao biti bolji, ali za sada je Kubernetes Web View alat za „napredne korisnike“ koji ne beže od ručne manipulacije URL putanjama ako je potrebno. Ako imate bilo kakve komentare/dodatke/prijedloge, kontaktirajte sa mnom na Twitteru!

Ovaj članak je kratka istorija pozadine koja je dovela do stvaranja Kubernetes Web View-a. Još će uslijediti! (Bilješka. transl.: Treba ih očekivati autorski blog.)

PS od prevodioca

Pročitajte i na našem blogu:

izvor: www.habr.com

Dodajte komentar