Kubernetese veebivaate teadaanne (ja lühike ülevaade teistest Kubernetese veebikasutajatest)

Märge. tõlge: Algmaterjali autor on Henning Jacobs Zalandost. Ta lõi Kubernetesiga töötamiseks uue veebiliidese, mis on positsioneeritud kui "kubectl veebi jaoks". Miks ilmus uus avatud lähtekoodiga projekt ja millistele kriteeriumidele olemasolevad lahendused ei vastanud – loe tema artiklist.

Kubernetese veebivaate teadaanne (ja lühike ülevaade teistest Kubernetese veebikasutajatest)

Selles postituses vaatan üle erinevad avatud lähtekoodiga Kubernetese veebiliidesed, esitan oma nõuded universaalsele kasutajaliidesele ja selgitan, miks ma välja töötasin. Kubernetes WebView — liides, mis on loodud mitme klastri korraga toetamise ja tõrkeotsingu hõlbustamiseks.

Kasutusjuhtumid

Zalandos teenindame suurt hulka Kubernetese kasutajaid (900+) ja klastreid (100+). On paar levinumat kasutusjuhtu, millele spetsiaalne veebitööriist oleks kasulik.

  1. suhtlemine kolleegidega toetuseks;
  2. vahejuhtumitele reageerimine ja nende põhjuste uurimine.

Toetama

Minu kogemuse kohaselt näevad tugisuhtlused sageli välja järgmised:

— Abi, meie teenus XYZ pole saadaval!
— Mida sa esinedes näed kubectl describe ingress ...?

Või midagi sarnast CRD jaoks:

— Mul on identifitseerimisteenusega probleeme...
— Mida käsk annab? kubectl describe platformcredentialsset ...?

Selline suhtlus taandub tavaliselt käsu erinevate variatsioonide sisestamisele kubectl probleemi tuvastamiseks. Selle tulemusena on vestluse mõlemad osapooled sunnitud pidevalt terminali ja veebivestluse vahel lülituma, lisaks jälgivad nad erinevat olukorda.

Seetõttu soovin, et Kubernetese veebiliides võimaldaks järgmist:

  • kasutajad võiksid vahetada linke ja jälgige sama asja;
  • aitaks vältida inimlikke vigu toes: näiteks sisselogimine käsureal valesse klastrisse, kirjavead CLI käskudes jne;
  • lubaks luua oma vaateid kolleegidele saatmiseks ehk siltide veergude lisamiseks, mitut tüüpi ressursside kuvamiseks ühel lehel;
  • Ideaalis peaks see veebitööriist võimaldama teil seadistada "sügavad" lingid YAML-i konkreetsetele jaotistele (näiteks tõrkeid põhjustava vale parameetri väljatoomine).

Juhtumitele reageerimine ja analüüs

Taristuintsidentidele reageerimine nõuab olukorrateadlikkust, võimet hinnata mõju ja otsida mustreid klastritest. Mõned näited elust:

  • Kriitilisel tootmisteenusel on probleeme ja te peate seda tegema otsige kõigist klastritest kõik Kubernetese ressursid nime järgitõrkeotsinguks;
  • sõlmed hakkavad skaleerimisel langema ja teil on vaja otsige kõigist klastritest kõik kaunad, mille olek on "Ootel".hinnata probleemi ulatust;
  • üksikud kasutajad teatavad kõigis klastrites juurutatud DaemonSeti probleemist ja peavad selle välja selgitama Kas probleem on totaalne?.

Minu standardlahendus sellistel juhtudel on midagi sellist for i in $clusters; do kubectl ...; done. Ilmselgelt on võimalik välja töötada tööriist, mis pakub sarnaseid võimalusi.

Olemasolevad Kubernetese veebiliidesed

Kubernetese veebiliideste avatud lähtekoodiga maailm ei ole väga suur*, seega proovisin koguda lisateavet kasutades puperdama:

Kubernetese veebivaate teadaanne (ja lühike ülevaade teistest Kubernetese veebikasutajatest)

*Minu selgitus Kubernetese piiratud arvu veebiliideste kohta: pilveteenused ja Kubernetese müüjad pakuvad tavaliselt oma kasutajaliideseid, seega on "hea" tasuta Kubernetese kasutajaliidese turg suhteliselt väike.

Ühe säutsu kaudu, millest sain teada K8Dash, Kubernaator и Oktant. Vaatame neid ja teisi olemasolevaid avatud lähtekoodiga lahendusi, proovime aru saada, mis need on.

K8Dash

"K8Dash on lihtsaim viis Kubernetese klastri haldamiseks."

Kubernetese veebivaate teadaanne (ja lühike ülevaade teistest Kubernetese veebikasutajatest)

K8Dash Näeb hea välja ja tundub kiire, kuid sellel on ülaltoodud kasutusjuhtudel mitmeid puudusi:

  • Töötab ainult ühe klastri piires.
  • Sorteerimine ja filtreerimine on võimalikud, kuid neil pole püsilinke.
  • Kohandatud ressursimääratlusi (CRD) ei toetata.

Kubernaator

"Kubernator on Kubernetese alternatiivne kasutajaliides. Erinevalt kõrgetasemelisest Kubernetese armatuurlauast pakub see madalatasemelist juhtimist ja suurepärast nähtavust kõikidele klastri objektidele koos võimalusega luua uusi, redigeerida ja lahendada konflikte. Kuna see on täielikult kliendipoolne rakendus (nagu kubectl), ei vaja see muud taustaprogrammi peale Kubernetes API serveri enda ja austab ka klastri juurdepääsureegleid.

Kubernetese veebivaate teadaanne (ja lühike ülevaade teistest Kubernetese veebikasutajatest)

See on üsna täpne kirjeldus Kubernaator. Kahjuks puuduvad sellel mõned funktsioonid:

  • Teenistab ainult ühte klastrit.
  • Loendivaate režiimi pole (st te ei saa kuvada kõiki olekuga "Ootel" kaustasid).

Kubernetese armatuurlaud

"Kubernetes Dashboard on universaalne veebiliides Kubernetese klastritele. See võimaldab kasutajatel hallata ja teha tõrkeotsingut klastris töötavate rakenduste kohta, samuti hallata klastrit ennast.

Kubernetese veebivaate teadaanne (ja lühike ülevaade teistest Kubernetese veebikasutajatest)

Kahjuks Kubernetese armatuurlaud ei aita tegelikult minu tugi- ja intsidentidele reageerimise tegevusi, sest see:

  • püsivaid linke pole, näiteks kui ma filtreerin ressursse või muudan sortimisjärjekorda;
  • oleku järgi filtreerimiseks pole lihtsat viisi – näiteks vaadake kõiki kaustasid, mille olek on "Ootel";
  • toetatakse ainult ühte klastrit;
  • CRD-sid ei toetata (see funktsioon on väljatöötamisel);
  • kohandatud veerge pole (nt tüübi järgi märgistatud veerge). kubectl -L).

Kubernetese töövaade (kube-ops-view)

"System Dashboard Observer for K8s Cluster Space."

Kubernetese veebivaate teadaanne (ja lühike ülevaade teistest Kubernetese veebikasutajatest)

У Kubernetese töövaade Täiesti erinev lähenemine: see tööriist näitab ainult klastri sõlmpunkte ja kaunasid, kasutades WebGL-i, ilma tekstiliste objektide üksikasjadeta. See on suurepärane kiire ülevaate saamiseks klastri seisundist (kas kaunad kukuvad?)*, kuid see ei sobi ülalkirjeldatud toe ja intsidentidele reageerimise kasutusjuhtudeks.

* Märge. tõlge: Selles mõttes võite olla huvitatud ka meie pistikprogrammist grafana-olekukaart, millest me rääkisime üksikasjalikumalt see artikkel.

Kubernetese ressursiaruanne (kube-resource-report)

"Koguge pod ja Kubernetese klastri ressursipäringuid, võrrelge neid ressursitarbimisega ja looge staatiline HTML."

Kubernetese veebivaate teadaanne (ja lühike ülevaade teistest Kubernetese veebikasutajatest)

Kubernetese ressursiaruanne genereerib staatilisi HTML-i aruandeid ressursside kasutamise ja kulude jaotuse kohta rühmade/rakenduste vahel klastrites. Aruanne on mõnevõrra kasulik toe ja intsidentidele reageerimise jaoks, kuna see võimaldab teil kiiresti leida klastri, kus rakendus on juurutatud.

Märge. tõlge: teenus ja tööriist võivad olla kasulikud ka teabe vaatamisel ressursside jaotamise ja nende kulude kohta pilveteenuse pakkujate vahel Kubecost, mille üle vaatame hiljuti avaldatud.

Oktant

"Laiendatav veebiplatvorm arendajatele, mis on loodud Kubernetese klastrite keerukuse paremaks mõistmiseks."

Kubernetese veebivaate teadaanne (ja lühike ülevaade teistest Kubernetese veebikasutajatest)

Oktant, mille on loonud VMware, on uus toode, mille kohta sain teada suhteliselt hiljuti. Selle abil on klastrit mugav kohalikus masinas uurida (seal on isegi visualiseeringud), kuid see käsitleb toe ja intsidentidele reageerimise küsimusi vaid piiratud ulatuses. Oktandi puudused:

  • Kobarotsing puudub.
  • Töötab ainult kohalikus masinas (ei juuruta klastrisse).
  • Objekte ei saa sortida/filtreerida (toetatud on ainult sildivalija).
  • Kohandatud veerge ei saa määrata.
  • Objekte ei saa nimeruumi järgi loetleda.

Mul oli probleeme ka Octani stabiilsusega Zalando klastritega: mõnel CRD-l ta oli kukkumas.

Tutvustame Kubernetese veebivaadet

"kubectl veebi jaoks".

Kubernetese veebivaate teadaanne (ja lühike ülevaade teistest Kubernetese veebikasutajatest)

Pärast Kubernetese saadaolevate liidesevalikute analüüsimist otsustasin luua uue: Kubernetes WebView. Lõppude lõpuks vajan ma lihtsalt kogu jõudu kubectl veebis, nimelt:

  • kõigi (kirjutuskaitstud) toimingute kättesaadavus, mille jaoks kasutajad eelistavad kasutada kubectli;
  • kõik URL-id peavad olema püsivad ja esindama lehte algsel kujul, et kolleegid saaksid neid jagada ja teistes tööriistades kasutada;
  • kõigi Kubernetese objektide tugi, mis võimaldab teil lahendada mis tahes tüüpi probleeme;
  • ressursside loendid peaksid olema edasiseks tööks allalaaditavad (arvutustabelites, CLI tööriistades nagu grep) ja ladustamine (näiteks postmortem);
  • tugi ressursside valimiseks sildi järgi (sarnane kubectl get .. -l);
  • võimalus luua kombineeritud loendeid erinevat tüüpi ressurssidest (sarnaselt kubectl get all) kolleegide seas ühise operatiivpildi saamiseks (näiteks intsidendile reageerimise ajal);
  • võimalus lisada kohandatud nutikaid sügavaid linke teistele tööriistadele, nagu armatuurlauad, logijad, rakenduste registrid jne. hõlbustada tõrkeotsingut/vigade lahendamist ja intsidentidele reageerimist;
  • Esikülg peaks olema võimalikult lihtne (puhas HTML), et vältida juhuslikke probleeme, nagu näiteks külmunud JavaScript;
  • mitme klastri tugi, et lihtsustada suhtlust kaugnõustamise ajal (nt meelde jätta ainult üks URL);
  • Võimaluse korral tuleks olukorra analüüsi lihtsustada (näiteks linkidega kõigi klastrite/nimeruumide ressursside allalaadimiseks);
  • lisavõimalused paindlike linkide loomiseks ja tekstiteabe esiletõstmiseks, näiteks selleks, et saaksite suunata kolleegid ressursikirjelduses konkreetsele jaotisele (YAML-is rida);
  • võimalus kohandada vastavalt konkreetse kliendi nõudmistele, võimaldades luua näiteks CRD-de jaoks spetsiaalseid kuvamalle, oma tabelivaateid ja muuta CSS-i stiile;
  • tööriistad käsureal edasiseks uurimiseks (näiteks täielike käskude kuvamine kubectl, kopeerimiseks valmis);

Lisaks Kubernetes Web View's lahendatud ülesannetele (mitteväravad) jäi:

  • Kubernetese objektide abstraktsioon;
  • rakenduste haldamine (näiteks juurutamise haldus, Helmi diagrammid jne);
  • kirjutamistoimingud (tuleb teha turvalise CI/CD ja/või GitOpsi tööriistade kaudu);
  • ilus liides (JavaScript, teemad jne);
  • visualiseerimine (vt kube-ops-view);
  • kuluanalüüs (vt kube-ressursiaruanne).

Kuidas Kubernetes Web View aitab toe ja intsidentidele reageerimisel?

Toetama

  • Kõik lingid on püsivad, mis teeb kolleegidega infovahetuse lihtsamaks.
  • Saate luua teie ideid, näiteks kuvada kõik konkreetse sildiga juurutused ja poodid kahes kindlas klastris (lingis saab määrata mitu klastri nime ja ressursitüüpi, eraldades need komadega).
  • Võite viidata konkreetsed read YAML-failis objekt, mis näitab võimalikke probleeme objekti spetsifikatsioonis.

Kubernetese veebivaate teadaanne (ja lühike ülevaade teistest Kubernetese veebikasutajatest)
Otsige Kubernetese veebivaates klastrite järgi

Juhtumitele reageerimine

  • Globaalne otsing (ülemaailmne otsing) võimaldab otsida objekte kõigist klastritest.
  • Loendi vaated suudab kuvada kõiki teatud oleku/veeruga objekte kõigis klastrites (näiteks peame leidma kõik kaustad olekuga "Ootel").
  • Objektide loendeid saab alla laadida tab-separated value (TSV) vormingus hilisemaks analüüsiks.
  • Kohandatavad välised lingid Võimaldab lülituda seotud armatuurlaudadele ja muudele tööriistadele.

Kubernetese veebivaate teadaanne (ja lühike ülevaade teistest Kubernetese veebikasutajatest)
Kubernetese veebivaade: kõigis klastrites olevate kaunade loend, mille olek on "Ootel".

Kui soovite Kubernetes Web View't proovida, soovitan seda kontrollida dokumentatsioon või vaata live demo.

Muidugi võiks liides olla parem, kuid praegu on Kubernetes Web View tööriist "edasijõudnutele", kes ei karda vajadusel URL-i teid käsitsi manipuleerida. Kui teil on kommentaare/täiendusi/ettepanekuid, võtke ühendust minuga Twitteris!

See artikkel on lühike ajalugu Kubernetes Web View loomiseni viinud taustast. Järgneb veel! (Märge. tõlge: Neid tuleks sisse oodata autori blogi.)

PS tõlkijalt

Loe ka meie blogist:

Allikas: www.habr.com

Lisa kommentaar