Napoved za Kubernetes Web View (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)

Op. prev.: Avtor izvirnega materiala je Henning Jacobs iz podjetja Zalando. Ustvaril je novi spletni uporabniški vmesnik za delo s Kubernetesom, ki se pozicionira kot „kubectl za splet“. Zakaj se je pojavil nov projekt z odprtokodnim sistemom in kateri kriteriji niso bili izpolnjeni s že obstoječimi rešitvami - berite v njegovem članku.

Napoved za Kubernetes Web View (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)

V tej objavi obravnavam različne odprtokodne spletne uporabniške vmesnike za Kubernetes, navajam svoje zahteve za univerzalni UI in razlagam, zakaj sem razvil Kubernetes Web View — vmesnik, ki naj poenostavi podporo in odpravljanje težav takoj v več clusterjih.

Uporabniški scenariji

V Zalandu upravljamo z veliko število uporabnikov Kubernetes (900+) in clusterjev (100+). Obstaja nekaj tipičnih primerov uporabe, kjer bi prišlo prav specializirano spletno orodje:

  1. komunikacija s kolegi v okviru podpore;
  2. reagiranja na incidente in raziskovanja njihovih vzrokov.

Podpora

Po mojem mnenju komunikacija v okviru podpore pogosto poteka takole:

— Pomoč, naš servis XYZ ni dostopen!
— Kaj vidiš, ko izvedeš kubectl describe ingress ...?

Ali kaj podobnega za CRD:

— Imam težavo s servisom za identifikacijo…
— Kaj izpiše ukaz kubectl describe platformcredentialsset ...?

Takšna komunikacija običajno vključuje vnos različnih variacij ukaza kubectl da bi ugotovili težavo. Kot rezultat se morata obe strani pogovora nenehno preklapljati med terminalom in spletnim čatom, poleg tega pa opazujeta različne situacije.

Zato bi rad, da spletni vmesnik za Kubernetes omogoča naslednje:

  • uporabniki bi lahko izmenjavali povezave in opazovali enako;
  • pomagal bi izogibati se človeškim napakam pri podpori: na primer, prijave v napačen cluster v ukazni vrstici, tipkarske napake v CLI ukazih itd.;
  • omogočal bi generiranje lastnih pogledov za pošiljanje kolegom, torej dodajanje stolpcev oznak, prikaz več vrst virov na eni strani;
  • v idealnem primeru bi to spletno orodje moralo omogočiti postavljanje „globokih“ povezav na določene odseke YAML (na primer, da se kaže na napačen parameter, ki povzroča težave).

Reagiranje na incidente in analiza

Reagiranje na incidente u infrastrukturi zahtijeva situacijsku svijest, sposobnost procjene utjecaja i traženje obrazaca u klastra. Neki primjeri iz stvarnog života:

  • kritični produkcijski servis ima problema i morate pronaći sve Kubernetes resurse po imenu u svim klasterima, kako biste otklonili kvar;
  • čvorovi počinju padati prilikom skaliranja, i morate pronaći sve podove sa statusom "Pending" u svim klasterima, kako biste procijenili razmjere problema;
  • određeni korisnici izvještavaju o problemu sa DaemonSet-om, koji je raspoređen u svim klasterima, i potrebno je ustanoviti ima li problem opsežan karakter.

Moj standardni odgovor u takvim slučajevima je nešto poput for i in $clusters; do kubectl ...; done. Očigledno, moguće je razviti alat koji će pružati slične mogućnosti.

Postojeće web-sučelja za Kubernetes

Svijet otvorenog koda web-sučelja za Kubernetes nije prevelik*, pa sam pokušao prikupiti dodatne informacije pomoću Twitter:

Napoved za Kubernetes Web View (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)

* Moje objašnjenje ograničenog broja web-sučelja za Kubernetes: oblačne usluge i Kubernetes dobavljači obično nude vlastite frontendove, stoga je tržište za "dobre" slobodne Kubernetes UI relativno malo.

Putem tvita saznao sam za K8Dash, Kubernator in Octant. Pogledajmo njih i druga postojeća rješenja otvorenog koda, pokušajmo shvatiti što predstavljaju.

K8Dash

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

Napoved za Kubernetes Web View (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)

K8Dash dobro izgleda i čini se da brzo radi, ali ima nekoliko nedostataka za navedene scenarije upotrebe:

  • 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 i rješavanja sukoba. Budući da je potpuno klijentska aplikacija (poput kubectl), ne zahtijeva nikakav backend osim samog API poslužitelja Kubernetes, a također uzima u obzir pravila pristupa klasteru."

Napoved za Kubernetes Web View (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)

To je prilično točan opis Kubernator-a. Nažalost, nedostaje mu neki mogućnosti:

  • Upravlja samo jednim klasterom.
  • Nima razreda pogleda v seznam (tj. vse pod'e s statusom «Pending» ne moremo prikazati).

Kubernetes Nadzorna plošča

«Kubernetes Nadzorna plošča je univerzalni spletni vmesnik za Kubernetes klastre. Omogoča uporabnikom upravljanje aplikacij, ki delujejo v klastru, odpravljanje težav ter upravljanje samega klasterja.»

Napoved za Kubernetes Web View (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)

Žal, Kubernetes Nadzorna plošča ni prav veliko v pomoč pri mojih dejavnostih podpore in odzivanja na incidente, saj:

  • ni trajnih povezav, na primer, ko filtriram vire ali spreminjam vrstni red sortiranja;
  • ni enostavnega načina za filtriranje po statusu - na primer, da vidim vse pod'e s statusom «Pending»;
  • podpira le en klaster;
  • CRD niso podprti (ta funkcija je v razvoju);
  • ni uporabniških stolpcev (na primer, stolpcev z oznakami kot je kubectl -L).

Kubernetes Operativni pregled (kube-ops-view)

«Sistemskega nadzornega panela za prostor K8s klasterjev.»

Napoved za Kubernetes Web View (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)

Pri Kubernetes Operativnem pregledu ima popolnoma drugačen pristop: ta pripomoček prikazuje le vozlišča klasterja in pod'e s pomočjo WebGL, brez kakršnih koli besedilnih podrobnosti objektov. Odlično je za operativni pregled stanja klasterja („Ali pod'e padajo?“)*, vendar ni primeren za prej omenjene primere uporabe pri podpori in odzivanju na incidente.

* Op. prev.: V tem smislu vas morda zanima tudi naš vtičnik grafana-statusmap, za katerega smo podrobneje pisali v this article.

Kubernetes Poročilu o virih (kube-resource-report)

«Zberite informacije o zahtevah pod'ov in klasterja Kubernetes, jih primerjajte s porabo virov ter ustvarite statični HTML.»

Napoved za Kubernetes Web View (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)

Kubernetes Poročilo o virih ustvarja statična HTML poročila o porabi virov in razdelitvi stroškov po ekipah/aplikacijah v klastrih. Poročilo je v določenem smislu koristno za podporo in odzivanje na incidente, saj omogoča hitrejše iskanje klasterja, v katerem je razporejena aplikacija.

Op. prev.: Pri ogledu informacij o razdelitvi virov in njihovih stroških pri ponudnikih oblačnih storitev je lahko koristen tudi servis in orodje Kubecost, katerega pregled smo nedavno objavili.

Octant

«Razširljiva spletna platforma za razvijalce, namenjena boljšemu razumevanju kompleksnosti klastrov Kubernetes.»

Napoved za Kubernetes Web View (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)

Octant, ustvarjen v VMware, je nov izdelek, o katerem sem izvedel sorazmerno nedavno. Z njegovo pomočjo je praktično raziskovati grozdje na lokalnem računalniku (na voljo so celo vizualizacije), vendar se omejeno ukvarja s problematiko podpore in odzivanja na incidente. Slabosti Octant:

  • Brez iskanja po grozdih.
  • Deluje samo na lokalnem računalniku (ni nameščen v grozdu).
  • Ni mogoče razvrstiti/filterirati objektov (podprt je le selektor oznak).
  • Ni mogoče določiti uporabniških stolpcev.
  • Ni mogoče prikazati seznama objektov po imenskih prostorih.

Tudi imel sem težave z stabilnostjo delovanja Octanta s grozdi Zalando: pri nekaterih CRD je padel.

Predstavljam Kubernetes Web View

„kubectl za splet“.

Napoved za Kubernetes Web View (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)

Po analizi razpoložljivih možnosti vmesnikov za Kubernetes, sem se odločil ustvariti novega: Kubernetes Web View. Kajti v bistvu potrebujem samo vso moč kubectl na spletu, in sicer:

  • dostopnost vseh (samo za branje) operacij, pri katerih uporabniki raje uporabljajo kubectl;
  • vsi URLji morajo biti trajni in predstavljati stran v izvirni obliki, da si jo kolegi lahko izmenjujejo in uporabljajo v drugih orodjih;
  • podpora za vse objekte Kubernetes, kar bo omogočilo reševanje težav katerega koli tipa;
  • seznam virov mora biti prenosljiv za nadaljnje delo (v preglednicah, CLI orodjih, kot so grep) in shranjevanje (na primer za postmorteme);
  • podpora za oblikovanje virov po oznakah (analogno kubectl get .. -l);
  • možnost ustvarjanja združenih seznamov različnih vrst virov (analogno kubectl get all) za pridobitev splošne operativne slike med kolegi (na primer, med odzivanjem na incident);
  • možnost dodajanja prilagodljivih „pametnih“ globokih povezav na druga orodja, kot so nadzorne plošče, loggerji, registri aplikacij itd., za lažje iskanje/odpravljanje napak in odzivanje na incidente;
  • frontend mora biti čim bolj enostaven (čisti HTML), da se izogne morebitnim težavam, kot so zamrznjeni JavaScript;
  • podpora za več grozdov za poenostavitev interakcij med oddaljenim svetovanjem (na primer, da si zapomnimo le en URL);
  • po možnosti je treba poenostaviti situacijsko analizo (na primer, z povezavami za prenos virov po vseh grozdih/imenskih prostorih);
  • Dodatne možnosti za ustvarjanje fleksibilnih povezav in izločanje besedilnih informacij, na primer, da lahko kolegom nakažemo določen odsek v opisu vira (vrstico v YAML);
  • Možnost prilagoditve zahtevam posameznega kupca, na primer, omogočanje ustvarjanja posebnih prikaznih predlog za CRD, lastne tabelarične poglede, spreminjanje CSS-stilov;
  • Orodja za nadaljnje raziskovanje v ukazni vrstici (na primer, prikazovanje polnih ukazov, kubectl, pripravljenih za kopiranje);

Zunaj nalog, rešenih v Kubernetes Web View (non-goals) so ostali:

  • abstrakcija objektov Kubernetes;
  • upravljanje z aplikacijami (na primer, upravljanje z razporeditvami, Helm charti in podobno);
  • operacije pisanja (morajo se izvajati preko varnih orodij CI/CD in/ali GitOps);
  • lep uporabniški vmesnik (JavaScript, teme itd.);
  • vizualizacije (glej kube-ops-view);
  • analizo stroškov (glej kube-resource-report).

Kako Kubernetes Web View pomaga pri podpori in odzivanju na incidente?

Podpora

  • Vse povezave so trajne, kar olajša izmenjavo informacij s kolegi.
  • Lahko ustvarite svoje poglede, na primer, prikažete vse razporeditve in pod'e z določenim oznako v dveh specifičnih klasterjih (več imen klasterjev in vrst virov lahko določite v povezavi, ločene z vejicami).
  • Lahko se sklicujete na določene vrstice v YAML datoteki objekta, nakazujejo potencialne težave v specifikaciji objekta.

Napoved za Kubernetes Web View (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)
Iskanje po klasterjih v Kubernetes Web View

Reagiranje na incidente

  • Globalno iskanje (global search) omogoča iskanje objektov v vseh klasterjih.
  • Seznami v obliki seznamov lahko prikažejo vse objekte z določenim stanjem/stolpcem v vseh klasterjih (na primer, želimo najti vse pod'e s statusom 'Pending').
  • Seznami objektov se lahko prenesejo v formatu vrednosti, ločenih s tabulacijo (TSV), za nadaljnjo analizo.
  • Prilagodljive zunanje povezave omogočajo preklapljanje na ustrezne nadzorne plošče in druga orodja.

Napoved za Kubernetes Web View (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)
Kubernetes Web View: seznam pod'ov s statusom 'Pending' v vseh klasterjih

Če želite preizkusiti Kubernetes Web View, priporočam, da se seznanite z dokumentacijo ali si ogledate živo demo različico.

Seveda, vmesnik bi lahko bil boljši, trenutno pa je Kubernetes Web View orodje za 'napredne uporabnike', ki se ne bojijo ročnega obvladovanja URL poti, če je potrebno. Če imate pripombe/dopolnila/želje, me prosim kontaktirajte na Twitterju!

Ta članek je kratek pregled okoliščin, ki so privedle do ustvarjanja Kubernetes Web View. Sledile bodo druge! (Op. prev.: Pričakujete jih lahko v blogu avtorja.)

P.S. od prevajalca

Preberite tudi na našem blogu:

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster