Kubernetes Web View veebiliidese tutvustus (ja ülevaade teistest Kubernetes web UI-dest)

Märk. tõlge.: Originaalmaterjali autor on Henning Jacobs Zalando's. Ta lõi Kubernetes'ega töötamiseks uue veebiliidese, mida turundatakse kui "kubectl veebi jaoks". Miks uue avatud lähtekoodiga projekti loomine tuli ja millistele kriteeriumidele olemasolevad lahendused ei vastanud – loe tema artiklist.

Kubernetes Web View veebiliidese tutvustus (ja ülevaade teistest Kubernetes web UI-dest)

Selles publikatsioonis käsitlen erinevaid avatud lähtekoodiga Kubernetes'e veebiliideseid, esitan oma nõudmised universaalsele kasutajaliidesele ja räägin, miks ma selle välja töötasin Kubernetes Web View – liides, mis on loodud, et hõlbustada toetuse ja tõrgete kõrvaldamise protsesse mitmes klastris korraga.

Kasutusstsenaariumid

Zalando's teenindame suurt hulka Kubernetes'e kasutajaid (üle 900) ja klastreid (üle 100). On paar tüüpilist kasutusjuhtu, kus spetsialiseeritud veebitööriist oleks väga abiks:

  1. suhtlemine kolleegidega tugiteenuste raames;
  2. reaktsioonide andmine ja nende põhjuste uurimine.

Toetamine

Minu kogemuse kohaselt näeb suhtlemine tugiteenuste raames sageli välja järgmine:

– Aita, meie teenus XYZ ei ole kättesaadav!
– Mida sa näed, kui sa täidate kubectl describe ingress ...?

Või midagi sarnast CRD jaoks:

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

Selline suhtlemine kipub piirduma erinevate käskude variantide sisestamisega, kubectl et probleem tuvastada. Tulemuseks on see, et mõlemad kõnelejad peavad pidevalt vahetama terminali ja veebivestluse vahel ning nad näevad erinevaid olukordi.

Seetõttu soovitakse, et Kubernetes'i veebiliides võimaldaks järgmist:

  • kasutajad saaksid jagada linke ja näha sama;
  • aitaks välistada inimlikke vigu tugiteenustes: näiteks vale klastrisse sisenemine käsureas, klaviatuuri trükivead CLI käskudes jne;
  • lubaks luua oma vaateid kolleegidele saatmiseks, st lisada siltide veerge, kuvada mitut tüüpi ressursse ühel lehel;
  • ideaalis peaks see veebitööriist võimaldama luua „sügavaid“ linke konkreetsetele YAML jaotistele (näiteks viitama valele parameetrile, mis põhjustab tõrkeid).

Juhtumite reageerimine ja analüüs

Infrastruktuuri intsidendi käsitlemine nõuab situatsioonilist teadlikkust, suutlikkust hinnata mõju ja mustrite leidmist klastrites. Mõned reaalsed näited:

  • kriitilise tähtsusega tootmisteenusel tekivad probleemid ja peate leidma kõik Kubernetes ressources nimede kaupa kõigis klastrites, et vigu parandada;
  • lood hakkavad kaduma skaleerimise käigus ja peate leidma kõik pod'id, mille olek on "Pending" kõigis klastrites, et hinnata probleemi ulatust;
  • erilised kasutajad teatavad probleemist DaemonSetiga, mis on kõigis klastrites üles seatud, ja tuleb välja selgitada, kas probleem on ulatuslik..

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

Praegused Kubernetes veebiliidese lahendused

Avatud lähtekoodiga maailm Kubernetes'le mõeldud veebiliidestest pole just suur*, seega proovisin koguda täiendavat teavet, kasutades Twitter:

Kubernetes Web View veebiliidese tutvustus (ja ülevaade teistest Kubernetes web UI-dest)

* Minu selgitus Kubernetes'i piiratud veebiliideste kohta: pilveteenused ja Kubernetes'i pakkujad pakuvad tavaliselt oma esiotsa, seega on turul «häid» tasuta Kubernetes'i UI lahendusi suhteliselt vähe.

Tweeti kaudu sain teada K8Dash, Kubernator ja Octant. Vaatame neid ja teisi olemasolevaid avatud lähtekoodiga lahendusi, proovime mõista, mida need endast kujutavad.

K8Dash

«K8Dash on lihtsaim viis Kubernetes'i klastrit hallata».

Kubernetes Web View veebiliidese tutvustus (ja ülevaade teistest Kubernetes web UI-dest)

K8Dash näeb hea välja ja tundub töötavat kiiresti, kuid sellel on mitmeid puudusi eelpool nimetatud kasutusstsenaariumide jaoks:

  • Töötab ainult ühe klastri piires.
  • Sorteerimine ja filtreerimine on võimalik, kuid puuduvad püsilingid.
  • Puudub tugi Custom Resource Definitions (CRD-de) jaoks.

Kubernator

«Kubernator — alternatiivne kasutajaliides Kubernetes'ile. Erinevalt kõrgtasemest Kubernetes Dashboard'ist, pakub see madalamal tasandil kontrolli ja suurepärast ülevaadet kõigist klastrite objektidest, võimaldades luua uusi, toimetada neid ja lahendada konflikte. Olles täielikult kliendipoolne rakendus (nagu kubectl), ei vaja see mingeid tagapindu peale Kubernetes API-serveri ning arvestab klastrile juurdepääsu reegleid.»

Kubernetes Web View veebiliidese tutvustus (ja ülevaade teistest Kubernetes web UI-dest)

See on üsna täpne kirjeldus Kubernator'ist. Kahjuks puuduvad tal mõned võimalused:

  • Toetab ainult ühte klastrit.
  • Puudub loendi režiim (st. ei saa kuvada kõiki pod'e, mille staatuseks on „Pending”).

Kubernetes Dashboard

«Kubernetes Dashboard on universaalne veebiliides Kubernetes'ile. See võimaldab kasutajatel hallata klastris töötavaid rakendusi ja lahendada nende tõrkeid, samuti hallata klastrit ise.»

Kubernetes Web View veebiliidese tutvustus (ja ülevaade teistest Kubernetes web UI-dest)

Kahjuks Kubernetes Dashboard ei aidata mind minu toetamisküsimustes ja reageerimises juhtumitele, kuna seal on:

  • puuduvad püsiviidud, näiteks kui ma filtreerin ressursse või muudan sortimise järjekorda;
  • Lihtsat viisi staatuse filtreerimiseks pole — näiteks, et näha kõiki pod'e staatusega «Pending»;
  • toetatakse ainult ühte klastrit;
  • CRD-d ei toetata (see funktsioon on väljatöötamisel);
  • ei ole kasutaja määratud veerge (nt veerge siltide tüübi järgi, kubectl -L).

Kubernetesi operatiivvaade (kube-ops-view)

„K8s klastrite ruumi süsteemne jälgimispaneel“.

Kubernetes Web View veebiliidese tutvustus (ja ülevaade teistest Kubernetes web UI-dest)

U Kubernetesi operatiivvaade täiesti erinev lähenemine: see tööriist näitab ainult klastrite sõlme ja pod'e WebGL abil, ilma objektide tekstiliste detailideta. See sobib suurepäraselt klastrite oleku kiireks ülevaateks („pod'id kukuvad?”)*, kuid ei sobi eespool kirjeldatud juhtumiteks, mis on seotud toe ja intsidentidega reageerimisega.

* Märk. tõlge.: Sellega seoses võib teid huvitada ka meie plugin grafana-statusmap, millest rääkisime lähemalt selles artiklis.

Kubernetesi ressursside aruanne (kube-resource-report)

„Koguge teavet pod'ide ja Kubernetes klastrite ressursside nõudmiste kohta, võrrelge seda ressursside tarbimisega ja genereerige staatiline HTML“.

Kubernetes Web View veebiliidese tutvustus (ja ülevaade teistest Kubernetes web UI-dest)

Kubernetesi ressursside aruanne genereerib staatilisi HTML-aruandeid ressursikasutuse ja kulude jaotuse kohta meeskondade/rakenduste vahel klasterites. Aruanne on osaliselt kasulik sündmuste haldamiseks ja reageerimiseks, kuna see võimaldab kiiremini leida klastrit, kus rakendus on juurutatud.

Märk. tõlge.: Pilgule ressurside ja nende kulude jaotuse kohta pilvteenuste pakkujates võib olla samuti kasulik teenus ja tööriist, Kubecost, mille üle me hiljuti avaldasime..

Octant

„Laienev veebiplatvorm arendajatele, mille eesmärk on pakkuda paremat arusaama Kubernetes'e klastrite keerukusest.”

Kubernetes Web View veebiliidese tutvustus (ja ülevaade teistest Kubernetes web UI-dest)

Octant, mis on loodud VMware'is, — uus toode, millest ma suhteliselt hiljuti kuu jooksul kuulnud olen. Selle abil on mugav uurida klastrit kohaliku masina peal (seal on isegi visualiseerimisi), kuid see käsitleb sündmuste haldamise ja reageerimise teemasid vaid piiratud määral. Octant'i puudused:

  • Klastrite otsingut pole.
  • Töötamine ainult kohaliku masinaga (ei juurutata klastris).
  • Objekte ei saa järjestada/filtreerida (toetatakse ainult sildise selektorit).
  • Kohandatud veerge ei saa määrata.
  • Nime ei saa nimepidamise alusel objektide loetelu väljastada.

Mul olid ka probleemid Octant'i töökindlusega Zalando klastritega: mõnedes CRD-des see kukkus kokku..

Tutvustan Kubernetes Web View.

«kubectl veebis».

Kubernetes Web View veebiliidese tutvustus (ja ülevaade teistest Kubernetes web UI-dest)

Analüüsides saadaval olevaid Kubernetes'i liideseid, otsustasin luua uue: Kubernetes Web ViewKuna mul on tegelikult vaja vaid kogu võimsust kubectl veebis, nimelt:

  • kõik (read-only) toimingud, kus kasutajad eelistasid kasutada kubectl'i, peavad olema kergesti ligipääsetavad;
  • kõik URL-id peavad olema püsivad ja esindama lehte originaalvormis, et kolleegid saaksid neid jagada ja kasutada teistes tööriistades;
  • toetama kõiki Kubernetes'i objekte, mis võimaldab lahendada igasuguseid probleeme;
  • ressursi loetelud peavad olema allalaaditavad edasiseks tööks (nt tabelites, CLI tööriistades nagu grep) ja säilitamiseks (nt postmortem'ides);
  • ressursside filtreerimise toetamine siltide põhjal (sarnaselt kubectl get .. -l);
  • võimalus luua erinevate ressurstüüpide kombineeritud loetelusid (sarnaselt kubectl get all) kolleegide hulgas üldise operatiivse pildi saamiseks (nt intsidentide reageerimise protsessis);
  • võimalus lisada kohandatavaid „nutikaid“ sügavaid linke teistele tööriistadele, nagu juhtpaneelid, logijad, rakenduste registrid jne, et hõlbustada otsimist / tõrkeotsingut ja reageerimist intsidentidele;
  • front-end peab olema võimalikult lihtne (puhas HTML), et vältida juhuslikke probleeme, näiteks hangunud JavaScript;
  • toetust mitmele klasterile, et lihtsustada kaugkonsultatsioonide läbiviimist (nt, et meeles pidada vaid ühte URL-i);
  • vajadusel peaks olukorra analüüsi lihtsustama (nt linkide kaudu ressursside alla laadimist kõikidesse klastritesse / nimesse ruumidesse);
  • täiendavad võimalused paindlike linkide loomiseks ja tekstilise teabe esitlemiseks, näiteks et saaksin kolleegide juurde osutada teatud jaos ressurssi kirjelduse (rida YAML-i);
  • võimalus kohandada vastavalt konkreetse kliendi nõudmistele, näiteks lubades luua spetsiaalseid kuvamismalle CRD-le, oma tabelvaateid, muuta CSS-i stiile;
  • tööriistad edasiseks uurimiseks käsureas (nt, näidates täielikke käske kubectl, kopeerimiseks valmis);

Kubernetes Web View lahendamata ülesannete seas (mitte-eesmärgid) jäänud:

  • Kubernetese objektide abstraktsioon;
  • rakenduste haldamine (nt deployment'ide, Helm-chart'ide jne haldamine);
  • kirjutamise operatsioonid (peavad toimuma läbi turvalise CI/CD tööriistade ja/või GitOps'i);
  • kaunis kasutajaliides (JavaScript, teemad jne);
  • visualiseerimine (vt. kube-ops-view);
  • kulude analüüs (vt. kube-resource-report).

Kuidas aitab Kubernetes Web View toetada ja reageerida juhtumitele?

Toetamine

  • Kõik lingid on püsivad, mis lihtsustab teabe jagamist kolleegidega.
  • Saate luua oma vaateid, näiteks kuvada kõik Deployment'id ja Pod'id, millel on teatud silt kahes konkreetses klastris (mitu klastri nime ja ressursitüüpi saab saata lingis, eraldades need komadega).
  • Saate viidata teatud ridadele YAML-failis objekt ning näidata potentsiaalseid probleeme objekti spetsifikatsioonis.

Kubernetes Web View veebiliidese tutvustus (ja ülevaade teistest Kubernetes web UI-dest)
Otsimine klastrites Kubernetes Web View's

Juhtumitele reageerimine

  • Globaalne otsing (global search) võimaldab otsida objekte kõigis klastrites.
  • Loendivaated võib kuvada kõik objektid, millel on teatud olek/kate kõigis klastrites (näiteks peame leidma kõik pod'id, mille olek on «Pending»).
  • Objektide loendeid saab alla laadida tabulaatoritega eraldatud väärtuste (TSV) formaadis edasiseks analüüsiks.
  • Kohandatavad välised lingid võimaldavad navigeerida vastavatesse monitooringu paneelidesse ja teistesse tööriistadesse.

Kubernetes Web View veebiliidese tutvustus (ja ülevaade teistest Kubernetes web UI-dest)
Kubernetes Web View: pod'ide nimekiri olekuga «Pending» kõigis klastrites

Kui soovite proovida Kubernetes Web View'd, soovitan tutvuda dokumentatsiooniga või vaadata live-demo versiooniga..

Muidugi saaks liides olla parem, aga praegu on Kubernetes Web View tööriist «edasijõudnud kasutajatele», kes ei karti vajadusel URL-teed käsitsi kohandada. Kui teil on märkusi/kommentaare/soove, võtke palun ühendust minuga Twitteris.!

See artikkel on lühike ülevaade eeldustest, mis viisid Kubernetes Web View loomise juurde. Järgnevate artiklitega ootame teid! (Märk. tõlge.Oodata on autori blogis..)

P.S. tõlkijalt

Lugege ka meie blogist:

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster