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.

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 – 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:
- suhtlemine kolleegidega tugiteenuste raames;
- 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 :

* 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 , ja . 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».

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.»

See on üsna täpne kirjeldus . 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.»

Kahjuks 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“.

U 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 , millest rääkisime lähemalt .
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“.

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, , mille üle me .
Octant
„Laienev veebiplatvorm arendajatele, mille eesmärk on pakkuda paremat arusaama Kubernetes'e klastrite keerukusest.”

, 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 .
Tutvustan Kubernetes Web View.
«kubectl veebis».

Analüüsides saadaval olevaid Kubernetes'i liideseid, otsustasin luua uue: Kuna 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. );
- kulude analüüs (vt. ).
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.

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.
- võimaldavad navigeerida vastavatesse monitooringu paneelidesse ja teistesse tööriistadesse.

Kubernetes Web View: pod'ide nimekiri olekuga «Pending» kõigis klastrites
Kui soovite proovida Kubernetes Web View'd, soovitan tutvuda või vaadata .
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 !
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 .)
P.S. tõlkijalt
Lugege ka meie blogist:
- «»;
- «»;
- «»;
- «».
Allikas: habr.com
