Napomena za prijevod.: Autor izvornog materijala — Henning Jacobs iz Zalanda. Stvorio je novo web sučelje za rad s Kubernetesom, koje se pozicionira kao «kubectl za web». Zašto je nastao novi Open Source projekt i kojima kriterijima postojeća rješenja nisu udovoljavala — pročitajte u njegovom članku.

U ovoj publikaciji razmatram različita web sučelja Kubernetes otvorenog koda, iznosim svoje zahtjeve za univerzalnim UI-jem i govorim o tome zašto sam razvio — sučelje koje ima za cilj olakšati podršku i rješavanje problema odmah u više klastera.
Scenariji korištenja
U Zalandu servisiramo veliku količinu korisnika Kubernetesa (900+) i klastera (100+). Postoji nekoliko tipičnih scenarija korištenja u kojima bi jako dobro došla pomoć specijaliziranog web alata:
- komunikacija s kolegama u okviru podrške;
- reakcija na incidente i istraživanje njihovih uzroka.
Podrška
Prema mome iskustvu, komunikacija u okviru podrške često izgleda ovako:
— Pomoć, naša usluga XYZ nije dostupna!
— Što vidite kada izvršite kubectl describe ingress ...?
Ili nešto slično za CRD:
— Imam neki problem s uslugom identifikacije...
— A što daje komanda kubectl describe platformcredentialsset ...?
Takva komunikacija obično se svodi na unos različitih varijacija komande kubectl kako bi se utvrdio problem. Kao rezultat, obje strane u razgovoru prisiljene su stalno prebacivati se između terminala i web chata, a pritom vide različite situacije.
Stoga bismo željeli da web frontend za Kubernetes omogućava sljedeće:
- korisnici bi mogli razmjenjivati linkove i vidjeti isto;
- pomoću da izbjegavaju ljudske pogreške u podršci: na primjer, ulazak u pogrešni klaster u naredbenom retku, tipfelere u CLI komandama itd.;
- omogućavao bi generiranje vlastitih prikaza za slanje kolegama, odnosno dodavanje stupaca oznaka, prikazivanje više tipova resursa na jednoj stranici;
- u idealnom slučaju, ovaj web alat trebao bi omogućiti postavljanje «dubokih» linkova na konkretne dijelove YAML-a (na primjer, ukazivanje na pogrešan parametar koji uzrokuje kvarove).
Reakcija na incidente i analiza
Reagiranje na incidente u infrastrukturi zahtijeva situacijsku osviještenost, sposobnost procjene utjecaja i traženje obrazaca u klasterima. Neki primjeri iz stvarnog života:
- kritični proizvodni servis ima problema i potrebno je pronaći sve resurse Kubernetes po imenu u svim klasterima, kako bi se otklonili problemi;
- čvorovi počinju padati tijekom skaliranja i potrebno je pronaći sve podove sa statusom „Pending“ u svim klasterima, kako bi se procijenio razmjer problema;
- pojedini korisnici prijavljuju problem s DaemonSet-om, raspoređenim u svim klasterima, i potrebno je utvrditi, ima li problem ukupnu prirodu.
Moje standardno rješenje u takvim slučajevima je nešto poput for i in $clusters; do kubectl ...; done. Očito, može se razviti alat koji pruža slične mogućnosti.
Postojeći web sučelja Kubernetes
Svijet Open Source web sučelja za Kubernetes nije prevelik*, pa sam pokušao prikupiti dodatne informacije uz pomoć :

* Moje objašnjenje ograničenog broja web sučelja za Kubernetes: cloud servisi i prodavači Kubernetes obično nude vlastite prednje strane, stoga je tržište za „dobra“ slobodna Kubernetes UI relativno malo.
Putem tvita saznao sam za , i . Pogledajmo njih i druga postojeća Open Source rješenja, pokušajmo shvatiti što predstavljaju.
K8Dash
„K8Dash je najjednostavniji način za upravljanje Kubernetes klasterom.“

dobro izgleda i djeluje brzo, ali ima nekoliko nedostataka za gore navedene scenarije korištenja:
- Radi samo unutar jednog klastera.
- Sortiranje i filtriranje su mogući, ali nemaju trajne linkove.
- Nema podršku za Custom Resource Definitions (CRDs).
Kubernator
„Kubernator je alternativno UI za Kubernetes. Za razliku od visoko razine panela Kubernetes Dashboard, pruža nisko razinu kontrole i odličan pregled svih objekata u klasteru s mogućnošću stvaranja novih, uređivanja njih i rješavanja sukoba. Budući da je potpuno klijentska aplikacija (kao kubectl), ne zahtijeva nikakav backend osim samog API poslužitelja Kubernetes, a također uzima u obzir pravila pristupa klasteru.“

To je prilično točan opis . Nažalost, nedostaju mu neke mogućnosti:
- Podržava samo jedan klaster.
- Nema prikaza načina liste (tj. nije moguće prikazati sve podove sa statusom „Pending“).
Kubernetes Dashbord
„Kubernetes Dashbord je univerzalno web sučelje za Kubernetes klastere. Omogućava korisnicima da upravljaju aplikacijama koje rade u klasteru i otklanjaju njihove greške, kao i da upravljaju samim klasterom.“

Nažalost, ne pomaže mnogo u mojim aktivnostima podrške i reagiranja na incidente, jer u njemu:
- nema trajnih veza, na primjer, kada filtriram resurse ili menjam redosled sortiranja;
- nema jednostavnog načina da se filtrira po statusu — na primer, videti sve podove sa statusom „Pending“;
- podržava samo jedan klaster;
- ne podržava CRD (ova funkcija je u razvoju);
- nema prilagođenih kolona (na primjer, kolone sa oznakama poput
kubectl -L).
Kubernetes Operativni Pogled (kube-ops-view)
„Sistem panel posmatrača za prostor klastera K8s.“

U ima potpuno drugačiji pristup: ovaj alat samo prikazuje čvorove klastera i podove putem WebGL, bez ikakvih tekstualnih detalja objekata. Izvrsno je prikladan za brz pregled stanja klastera („padaju li podovi?“)*, ali nije pogodan za gore opisane slučajeve korišćenja u podršci i reagiranju na incidente.
* Napomena za prijevod.: U tom smislu, mogli bi vas zanimati naš dodatak , o kojem smo detaljnije govorili u .
Kubernetes Izvještaj o Resursima (kube-resource-report)
„Prikupite informacije o zahtevima resursa podova i klastera Kubernetes, uporedite ih sa potrošnjom resursa i generišite statični HTML.“

generiše statične HTML izveštaje o korišćenju resursa i raspodeli troškova po timovima/aplikacijama u klasterima. Izveštaj je donekle koristan za podršku i reagiranje na incidente, jer omogućava brže pronalaženje klastera u kojem je aplikacija raspoređena.
Napomena za prijevod.: U pregledu informacija o raspodeli resursa i njihovim troškovima može se pokazati korisnim i usluga i alat , čiji smo pregled .
Octant
„Proširiva web-platforma za developere, dizajnirana da omogući bolje razumevanje složenosti Kubernetes klastera“.

, stvoren u VMware-u, je novi proizvod za koji sam saznao relativno nedavno. Pomaže u istraživanju klastera na lokalnom računalu (postoje čak i vizualizacije), no dodiruje problematiku podrške i odgovaranja na incidente samo u ograničenoj mjeri. Nedostaci Octanta:
- Nema pretraživanja po klasterima.
- Radi samo na lokalnom računalu (ne može se implementirati u klaster).
- Nemoguće je sortirati/filterirati objekte (podržava se samo odabir oznaka).
- Ne mogu se postaviti prilagođeni stupci.
- Ne može se prikazati lista objekata po prostorima imena.
Također sam imao problema s pouzdanošću rada Octanta s klasterima Zalando: na nekim CRD .
Predstavljam Kubernetes Web View
"kubectl za web".

Analizirajući dostupne opcije sučelja za Kubernetes, odlučio sam stvoriti novo: . Jer mi u suštini treba samo svu snagu kubectl u webu, a to su:
- dostupnost svih (samo za čitanje) operacija koje korisnici radije koriste s kubectl-om;
- svi URL-ovi moraju biti trajni i predstavljati stranicu u izvornom obliku, kako bi kolege mogli razmjenjivati i koristiti ih u drugim alatima;
- podrška za sve objekte Kubernetesa, što će omogućiti rješavanje problema bilo koje vrste;
- popisi resursa trebaju biti preuzeti za daljnji rad (u tablicama, CLI alatima poput
grep) i pohranjivanje (na primjer, za postmortem); - podrška za filtriranje resursa prema oznakama (po analogiji s
kubectl get .. -l); - mogućnost stvaranja kombiniranih popisa različitih tipova resursa (po analogiji s
kubectl get all) za dobivanje cjelokupne operativne slike među kolegama (na primjer, tijekom reakcije na incident); - mogućnost dodavanja prilagođenih "pametnih" dubokih poveznica na druge alate, poput nadzornih ploča, loggera, repozitorija aplikacija itd. za olakšavanje pretraživanja/otklanjanja pogrešaka i reagiranja na incidente;
- frontend bi trebao biti maksimalno jednostavan (čisti HTML), kako bi se izbjegli slučajni problemi, poput zamrznutog JavaScripta;
- podrška za mnoge klastere za pojednostavljenje suradnje prilikom udaljenog savjetovanja (na primjer, da se zapamti samo jedan URL);
- kada je moguće, situacijska analiza bi trebala biti olakšana (na primjer, s poveznicama za preuzimanje resursa s svih klastera/prostora imena);
- dodatne mogućnosti za kreiranje fleksibilnih linkova i isticanje tekstualnih informacija, na primjer, kako bi se zaposlenicima moglo ukazati na određeni odjeljak u opisu resursa (redak u YAML-u);
- mogućnost prilagodbe zahtjevima određenog klijenta, na primjer, omogućujući kreiranje posebnih prikaznih predložaka za CRD, vlastitih tabličnih prikaza, promjenu CSS stilova;
- sredstva za daljnje istraživanje u komandnoj liniji (na primjer, prikazujući pune naredbe
kubectl, spremne za kopiranje);
Izvan zadataka rješavanih u Kubernetes Web View (non-goals) ostali su:
- apstrahiranje Kubernetes objekata;
- upravljanje aplikacijama (na primjer, upravljanje deployment-ima, Helm chart-ovima itd.);
- operacije pisanja (moraju se provoditi kroz sigurne alate CI/CD i/ili GitOps);
- lijep sučelje (JavaScript, teme itd.);
- vizualizacije (vidi );
- analizu troškova (vidi ).
Kako Kubernetes Web View pomaže u podršci i odgovoru na incidente?
Podrška
- Sve veze su trajne, što olakšava razmjenu informacija s kolegama.
- Možete kreirati svoje prikaze, na primjer, prikazati sve Deployment-e i Pod-ove s određenom oznakom u dva konkretna klastera (više imena klastera i tipova resursa može se naznačiti u linku, odvajajući ih zarezima).
- Možete se pozivati na određene retke u YAML datoteci objekta, ukazujući na potencijalne probleme u specifikaciji objekta.

Pretraživanje klastera u Kubernetes Web View
Odgovaranje na incidente
- Globalno pretraživanje (global search) omogućuje pretraživanje objekata u svim klasterima.
- Prikazi u obliku popis mogu prikazivati sve objekte s određenim stanjem/stupcem u svim klasterima (na primjer, potrebno nam je pronaći sve pod-ove sa statusom «Pending».
- Popisi objekata se mogu preuzeti u formatu vrijednosti odvojenih tabulatorima (TSV) za daljnju analizu.
- omogućuju prebacivanje na odgovarajuće nadzorne ploče i druge alate.

Kubernetes Web View: popis pod-ova sa statusom «Pending» u svim klasterima
Ako želite isprobati Kubernetes Web View, preporučujem da se upoznate s ili pogledate .
Naravno, sučelje bi moglo biti i bolje, a trenutno je Kubernetes Web View alat za "napredne korisnike" koji nisu strašljivi kada je potrebno ručno manipulirati URL putanjama. Ako imate komentare/dopune/želje, molim vas da me kontaktirate !
Ovaj članak je kratak pregled preduvjeta koji su doveli do stvaranja Kubernetes Web View. Slijedit će ga drugi! (Napomena za prijevod.: Očekujte ih u .)
P.S. od prevoditelja
Pročitajte i na našem blogu:
- «»;
- «»;
- «»;
- «».
Izvor: habr.com
