Najava Kubernetes Web View (i kratak pregled drugih web UI-ja za Kubernetes)

Bilješka. prev.: Autor izvornog materijala je Henning Jacobs iz Zalanda. Kreirao je novo web sučelje za rad s Kubernetesom, koje je pozicionirano kao “kubectl za web”. Zašto se pojavio novi Open Source projekt i koje kriterije nisu zadovoljila postojeća rješenja - pročitajte u njegovom članku.

Najava Kubernetes Web View (i kratak pregled drugih web UI-ja za Kubernetes)

U ovom postu pregledavam različita Kubernetes web sučelja otvorenog koda, iznosim svoje zahtjeve za univerzalno korisničko sučelje i objašnjavam zašto sam razvio Kubernetes WebView — sučelje dizajnirano da olakša podršku i rješavanje problema s više klastera odjednom.

Slučajevi upotrebe

U Zalandu služimo velikom broju korisnika Kubernetesa (900+) i klastera (100+). Postoji nekoliko uobičajenih slučajeva upotrebe kojima bi namjenski web alat bio od koristi:

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

podrška

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

— Upomoć, naša usluga XYZ nije dostupna!
— Što vidite kada nastupate kubectl describe ingress ...?

Ili nešto slično za CRD:

— Imam problema s identifikacijskim servisom...
— Što naredba proizvodi? kubectl describe platformcredentialsset ...?

Takva se komunikacija obično svodi na unos raznih varijanti naredbe kubectl kako bi se identificirao problem. Kao rezultat toga, obje strane u razgovoru su prisiljene stalno se prebacivati ​​između terminala i web chata, plus promatraju drugačiju situaciju.

Stoga bih želio da Kubernetes web sučelje omogući sljedeće:

  • korisnici bi mogli razmjena linkova i promatrati istu stvar;
  • će pomoći izbjeći ljudske pogreške u podršci: na primjer, prijava u pogrešan klaster na naredbenom retku, pogreške pri upisu u CLI naredbama itd.;
  • dopustio bi generirajte vlastite poglede poslati kolegama, odnosno dodati stupce oznaka, prikazati mnoge vrste resursa na jednoj stranici;
  • U idealnom slučaju, ovaj web alat trebao bi vam omogućiti postavljanje "duboke" veze na određene dijelove YAML-a (na primjer, ukazivanje na netočan parametar koji uzrokuje kvarove).

Odgovor i analiza incidenta

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

  • Kritična proizvodna služba ima problema i vi to trebate pronaći sve Kubernetes resurse po imenu u svim klasterimaotkloniti probleme;
  • čvorovi počinju padati prilikom skaliranja i trebate pronaći sve mahune sa statusom "Na čekanju" u svim klasterimaprocijeniti opseg problema;
  • pojedinačni korisnici prijavljuju problem s DaemonSet raspoređenim u svim klasterima i moraju to otkriti Je li problem totalan?.

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

Postojeća Kubernetes web sučelja

Svijet otvorenog koda web sučelja za Kubernetes nije jako velik*, pa sam pokušao prikupiti više informacija pomoću X / Twitter:

Najava Kubernetes Web View (i kratak pregled drugih web UI-ja za Kubernetes)

*Moje objašnjenje za ograničeni broj web sučelja za Kubernetes: usluge u oblaku i prodavači Kubernetesa obično nude vlastita sučelja, tako da je tržište za "dobro" besplatno Kubernetes UI relativno malo.

Kroz tweet za koji sam saznao K8Crtica, Kubernator и Oktant. Pogledajmo njih i druga postojeća Open Source rješenja, pokušajmo razumjeti što su.

K8Crtica

"K8Dash je najjednostavniji način upravljanja Kubernetes klasterom."

Najava Kubernetes Web View (i kratak pregled drugih web UI-ja za Kubernetes)

K8Crtica Izgleda dobro i djeluje brzo, ali ima brojne nedostatke za gore navedene slučajeve upotrebe:

  • Radi samo unutar granica jednog klastera.
  • Razvrstavanje i filtriranje su mogući, ali nemaju stalne veze.
  • Ne postoji podrška za Custom Resource Definitions (CRD).

Kubernator

“Kubernator je alternativno korisničko sučelje za Kubernetes. Za razliku od Kubernetes nadzorne ploče visoke razine, pruža kontrolu niske razine i izvrsnu vidljivost svih objekata u klasteru s mogućnošću stvaranja novih, uređivanja i rješavanja sukoba. Budući da je u potpunosti aplikacija na strani klijenta (kao što je kubectl), ne zahtijeva nikakav backend osim samog Kubernetes API poslužitelja, a također poštuje pravila pristupa klasteru.”

Najava Kubernetes Web View (i kratak pregled drugih web UI-ja za Kubernetes)

Ovo je prilično točan opis Kubernator. Nažalost, nedostaju mu neke značajke:

  • Služi samo jednom klasteru.
  • Ne postoji način prikaza popisa (tj. ne možete prikazati sve mahune sa statusom "Na čekanju").

Nadzorna ploča Kubernetes

“Kubernetes Dashboard je univerzalno web sučelje za Kubernetes klastere. Korisnicima omogućuje upravljanje i rješavanje problema s aplikacijama koje se izvode u klasteru, kao i upravljanje samim klasterom.”

Najava Kubernetes Web View (i kratak pregled drugih web UI-ja za Kubernetes)

Nažalost, Nadzorna ploča Kubernetes zapravo ne pomaže u mojoj podršci i aktivnostima odgovora na incidente jer:

  • nema stalnih veza, na primjer kada filtriram resurse ili promijenim redoslijed sortiranja;
  • nema jednostavnog načina filtriranja prema statusu - na primjer, pogledajte sve mahune sa statusom "Na čekanju";
  • samo jedan klaster je podržan;
  • CRD-ovi nisu podržani (ova značajka je u razvoju);
  • nema prilagođenih stupaca (kao što su stupci označeni prema vrsti kubectl -L).

Kubernetes operativni prikaz (kube-ops-view)

"Promatrač nadzorne ploče sustava za prostor klastera K8s."

Najava Kubernetes Web View (i kratak pregled drugih web UI-ja za Kubernetes)

У Kubernetes operativni prikaz Potpuno drugačiji pristup: ovaj alat prikazuje samo čvorove klastera i podove pomoću WebGL-a, bez ikakvih detalja tekstualnog objekta. Izvrstan je za brzi pregled stanja klastera (padaju li mahune?)*, ali nije prikladan za gore opisane slučajeve upotrebe podrške i odgovora na incidente.

* Bilješka. prev.: U tom smislu bi vas mogao zanimati i naš dodatak grafana-statusmap, o čemu smo detaljnije govorili u ovaj članak.

Izvješće o Kubernetes 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 View (i kratak pregled drugih web UI-ja za Kubernetes)

Izvješće o Kubernetes resursima generira statička HTML izvješća o korištenju resursa i raspodjeli troškova između timova/aplikacija u klasterima. Izvješće je donekle korisno za podršku i odgovor na incident jer vam omogućuje brzo pronalaženje klastera u kojem je aplikacija postavljena.

Bilješka. prev.: Usluga i alat također mogu biti korisni u pregledu informacija o raspodjeli resursa i njihovim troškovima među pružateljima usluga oblaka Kubecost, koje pregledavamo nedavno objavljeno.

Oktant

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

Najava Kubernetes Web View (i kratak pregled drugih web UI-ja za Kubernetes)

Oktant, koji je stvorio VMware, novi je proizvod za koji sam saznao relativno nedavno. Uz njegovu pomoć prikladno je istraživati ​​klaster na lokalnom računalu (postoje čak i vizualizacije), ali rješava pitanja podrške i odgovora na incidente samo u ograničenoj mjeri. Nedostaci Octanta:

  • Nema pretraživanja klastera.
  • Radi samo na lokalnom računalu (ne implementira se u klaster).
  • Nije moguće sortirati/filtrirati objekte (podržan je samo birač oznaka).
  • Ne možete navesti prilagođene stupce.
  • Ne možete navesti objekte prema prostoru imena.

Također 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 View (i kratak pregled drugih web UI-ja za Kubernetes)

Nakon analize dostupnih opcija sučelja za Kubernetes, odlučio sam stvoriti novo: Kubernetes WebView. Uostalom, zapravo, samo mi treba sva snaga kubectl na webu, naime:

  • dostupnost svih operacija (samo za čitanje) za koje korisnici radije 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 rješavanje bilo koje vrste problema;
  • popisi resursa trebali bi se moći preuzeti za daljnji rad (u proračunskim tablicama, CLI alatima poput grep) i skladištenje (na primjer, za obdukciju);
  • podrška za odabir resursa prema oznaci (slično kao kubectl get .. -l);
  • mogućnost stvaranja kombiniranih popisa različitih vrsta resursa (slično kubectl get all) za dobivanje zajedničke operativne slike među kolegama (na primjer, tijekom odgovora na incident);
  • mogućnost dodavanja prilagođenih pametnih dubinskih veza drugim alatima kao što su nadzorne ploče, zapisnici, registri aplikacija itd. olakšati otklanjanje poteškoća/rješavanje pogrešaka i reagiranje na incidente;
  • Sučelje bi trebalo biti što jednostavnije (čisti HTML) kako bi se izbjegli nasumični problemi, kao što je zamrznuti JavaScript;
  • podrška za više klastera za pojednostavljenje interakcije tijekom daljinskog savjetovanja (na primjer, za pamćenje samo jednog URL-a);
  • Ako je moguće, situacijsku analizu treba pojednostaviti (na primjer, s poveznicama za preuzimanje resursa za sve klastere/imenske prostore);
  • dodatne mogućnosti za stvaranje fleksibilnih poveznica i isticanje tekstualnih informacija, na primjer, tako da možete usmjeriti kolege na određeni odjeljak u opisu resursa (redak u YAML-u);
  • mogućnost prilagodbe zahtjevima određenog klijenta, na primjer, omogućujući vam stvaranje posebnih predložaka prikaza za CRD-ove, vlastite prikaze tablica i promjenu CSS stilova;
  • alati za daljnje istraživanje na naredbenom retku (na primjer, prikazivanje potpunih naredbi kubectl, spreman za kopiranje);

Osim zadataka koji se rješavaju u Kubernetes Web Viewu (ne-golovi) preostala:

  • apstrakcija Kubernetes objekata;
  • upravljanje aplikacijama (na primjer, upravljanje implementacijom, Helm karte, itd.);
  • operacije pisanja (moraju se obaviti putem sigurnih CI/CD i/ili GitOps alata);
  • lijepo sučelje (JavaScript, teme, itd.);
  • vizualizacija (vidi kube-ops-view);
  • analiza troškova (vidi kube-resource-izvješće).

Kako Kubernetes Web View pomaže s podrškom i odgovorom na incidente?

podrška

  • Sve veze su trajne, što olakšava razmjenu informacija s kolegama.
  • Možete stvarati vaše ideje, na primjer, prikaži sve Deployments i Pods s određenom oznakom u dva određena klastera (nekoliko naziva klastera i tipova resursa može se navesti u vezi, odvojenih zarezima).
  • Možete se pozvati na određene linije u YAML datoteci objekta, ukazujući na moguće probleme u specifikaciji objekta.

Najava Kubernetes Web View (i kratak pregled drugih web UI-ja za Kubernetes)
Pretraživanje po klasterima u Kubernetes Web Viewu

Odgovor na incident

  • Globalna pretraga (globalno pretraživanje) omogućuje vam traženje objekata u svim klasterima.
  • Prikazi popisa može prikazati sve objekte s određenim stanjem/stupcem u svim klasterima (na primjer, moramo pronaći sve mahune sa statusom "Na čekanju").
  • Popise objekata moguće je preuzeti u formatu vrijednosti odvojenih tabulatorima (TSV) za kasniju analizu.
  • Prilagodljive vanjske veze Omogućuje vam prebacivanje na povezane nadzorne ploče i druge alate.

Najava Kubernetes Web View (i kratak pregled drugih web UI-ja za Kubernetes)
Kubernetes Web View: popis podova sa statusom "Na čekanju" u svim klasterima

Ako želite isprobati Kubernetes Web View, preporučujem da provjerite dokumentacija ili pogledati demo uživo.

Naravno, sučelje bi moglo biti bolje, ali za sada je Kubernetes Web View alat za "napredne korisnike" koji ne bježe od ručnog manipuliranja URL stazama ako je potrebno. Ako imate bilo kakvih komentara/dodataka/prijedloga, obratite se sa mnom na Twitteru!

Ovaj je članak kratka povijest pozadine koja je dovela do stvaranja Kubernetes Web Viewa. Više će uslijediti! (Bilješka. prev.: Treba ih očekivati ​​u autorov blog.)

PS od prevoditelja

Pročitajte i na našem blogu:

Izvor: www.habr.com

Dodajte komentar