Shën. përk.: Autori i materialit origjinal është Henning Jacobs nga kompania Zalando. Ai krijoi një ndërfaqe të re uebi për të punuar me Kubernetes, e cila pozicionohet si 'kubectl për web'. Pse u shfaq ky projekt i ri Open Source dhe cilat kritere nuk i përmbushnin zgjidhjet ekzistuese - lexoni në artikullin e tij.

NĂ« kĂ«tĂ« publikim, unĂ« shqyrtoj ndĂ«rfaqet e ndryshme tĂ« Kubernetes me kod tĂ« hapur, paraqes kĂ«rkesat e mia pĂ«r njĂ« UI universale dhe tregoj pse e zhvillova â njĂ« ndĂ«rfaqe, e cila synon tĂ« lehtĂ«sojĂ« mbĂ«shtetje dhe diagnostikimin e problemeve nĂ« shumĂ« klasterĂ« njĂ«kohĂ«sisht.
Skenarët e përdorimit
Në Zalando, ne shërbejmë një numër të madh përdoruesish Kubernetes (më shumë se 900) dhe klasterësh (më shumë se 100). Ekzistojnë disa raste tipike përdorimi, ku do të ishte shumë e dobishme një mjet të specializuar në web:
- komunikimi me kolegët për mbështetje;
- reagimi ndaj incidenteve dhe hetimi i shkaqeve të tyre.
Mbështetje
Nga përvoja ime, komunikimi për mbështetje shpesh duket si më poshtë:
â Ndihmoni, shĂ«rbimi ynĂ« XYZ nuk Ă«shtĂ« nĂ« dispozicion!
â ĂfarĂ« shihni kur ekzekutoni kubectl describe ingress ...?
Ose diçka e ngjashme për CRD:
â Kam ka njĂ« problem me shĂ«rbimin e identifikimitâŠ
â ĂfarĂ« ndodh kur ekzekutohet komandĂ«n kubectl describe platformcredentialsset ...?
Të tilla biseda zakonisht reduktohen në futjen e varianteve të ndryshme të komandës kubectl në përpjekje për të identifikuar problemin. Si rezultat, të dyja palët e bisedës detyrohen të kalojnë vazhdimisht midis terminalit dhe bisedës në web, për më tepër ata vërejnë situata të ndryshme.
Prandaj, dëshiroj që frontend-i web për Kubernetes të lejojë këtë:
- përdoruesit të mund të ndajnë lidhje dhe të vërejnë të njëjtën gjë;
- të ndihmojë në shmangien e gabimeve njerëzore në mbështetje: për shembull, të mos hyjë në klusterin e gabuar në komandën e linjës, gabime në komandat CLI etj.;
- të mundësonte të gjenerojë pamje të përshtatura për t'u dërguar kolegëve, dmth. të shtojë kolona etiketa, të shfaqë shumë lloje burimesh në një faqe;
- në përfundim, ky vegël web duhet të lejojë vendosjen e lidhjeve 'të thella' për seksione specifike YAML (për shembull, të tregojë për një parametër të gabuar që shkakton dështime).
Reagimi ndaj incidenteve dhe analiza
Reagimi ndaj incidenteve në infrastrukturë kërkon një njohuri situatash, aftësi për të vlerësuar ndikimin dhe për të kërkuar modele në klastera. Disa shembuj nga jeta reale:
- shërbimi i produksionit kritik ka probleme dhe ju është e nevojshme të gjeni të gjitha burimet Kubernetes sipas emrit në të gjitha klasterat, për të zgjidhur problemet;
- nyjet fillojnë të bien gjatë shkallëzimit, dhe ju duhet të gjeni të gjitha pod-et me status «Pending» në të gjitha klasterat, për të evaluluar shkallën e problemit;
- përdorues të veçantë raportojnë një problem me DaemonSet, i zhvilluar në të gjitha klasterat, dhe është e nevojshme të kuptohet, nëse problemi ka karakter të përgjithshëm.
Zgjidhja ime standarde në këto raste është diçka si for i in $clusters; do kubectl ...; done. Sigurisht, mund të zhvillohet një instrument që ofron mundësi të ngjashme.
Në ekzistencë janë ndërfaqet e uebit për Kubernetes
Bota Open Source e ndërfaqeve të uebit për Kubernetes nuk është shumë e madhe*, kështu që provoja të mbledh informacion shtesë përmes :

* Shpjegimi im pĂ«r numrin e kufizuar tĂ« ndĂ«rfaqeve tĂ« internetit pĂ«r Kubernetes: shĂ«rbimet cloud dhe furnizuesit e Kubernetes zakonisht ofrojnĂ« interfazet e tyre, kĂ«shtu qĂ« tregu pĂ«r UI tĂ« âmirĂ«â tĂ« Kubernetes Ă«shtĂ« relativisht i vogĂ«l.
Me një tweet mësova për , dhe . Le të shohim ata dhe zgjidhje të tjera Open Source ekzistuese, të përpiqemi të kuptojmë se çfarë përfaqësojnë.
K8Dash
"K8Dash është mënyra më e thjeshtë për të menaxhuar një kluster Kubernetes".

dukjesh mirë dhe ndjehet i shpejtë në funksionim, por ka disa të meta për skenarët e përdorimit të përmendur më lart:
- Funksionon vetëm brenda një klasteri.
- Grumbullimi dhe filtrimi janë të mundshme, por nuk kanë lidhje të përhershme.
- Nuk mbështet Custom Resource Definitions (CRDs).
Kubernator
«Kubernator â Ă«shtĂ« njĂ« ndĂ«rfaqe alternative pĂ«r Kubernetes. Ndryshe nga paneli i lartĂ« i Kubernetes Dashboard, ai siguron kontroll mĂ« tĂ« ulĂ«t dhe njĂ« pasqyrĂ« tĂ« shkĂ«lqyer tĂ« tĂ« gjithĂ« objekteve nĂ« klaster me mundĂ«sinĂ« pĂ«r tĂ« krijuar tĂ« reja, pĂ«r t'i redaktuar ato dhe pĂ«r tĂ« zgjidhur konflikte. Duke qenĂ« njĂ« aplikacion krejtĂ«sisht klienti (si kubectl), ai nuk kĂ«rkon ndonjĂ« backend pĂ«rveç API-serverit tĂ« Kubernetes, dhe gjithashtu merr parasysh rregullat e qasjes nĂ« klaster».

Ky është një përshkrim mjaft i saktë . Fatkeqësisht, i mungojnë disa funksionalitete:
- Shërben vetëm për një klaster.
- Nuk ka njĂ« mod tĂ« shikimit nĂ« formĂ«n e listĂ«s (dmth, nuk mund tĂ« nxjerr tĂ« gjitha podâtĂ« me status «PĂ«rgjigje»).
Kubernetes Dashboard
«Kubernetes Dashboard â Ă«shtĂ« njĂ« ndĂ«rfaqe universale nĂ« ueb pĂ«r klasterĂ«t Kubernetes. Ai u mundĂ«son pĂ«rdoruesve tĂ« menaxhojnĂ« aplikacionet qĂ« funksionojnĂ« nĂ« klaster dhe tĂ« zgjidhin problemet e tyre, si dhe tĂ« menaxhojnĂ« vetĂ« klasterin».

Fatkeqësisht, nuk ndihmon shumë në aktivitete të mia për mbështetje dhe reagim ndaj incidenteve, sepse në të:
- nuk ka lidhje të qëndrueshme, për shembull, kur filtroj burimet ose ndryshoj renditjen;
- Nuk ka njĂ« mĂ«nyrĂ« tĂ« thjeshtĂ« pĂ«r tĂ« filtruar sipas statusit â pĂ«r shembull, pĂ«r tĂ« parĂ« tĂ« gjitha podâĂ«t me statusin «Pending»;
- mbështetet vetëm një klaster;
- CRD-të nuk mbështeten (kjo funksion është në zhvillim);
- nuk ka kolona të personalizuara (për shembull, kolona me etiketa si
kubectl -L).
Pamja Operative e Kubernetes (kube-ops-view)
«Pjesa e Kontrollit për hapësirën e klasterëve K8s».

Tek njĂ« qasje krejtĂ«sisht tjetĂ«r: ky mjet tregon vetĂ«m nodet e klasterit dhe podâĂ«t duke pĂ«rdorur WebGL, pa asnjĂ« detaj tekstual tĂ« objekteve. Ai Ă«shtĂ« ideal pĂ«r njĂ« pĂ«rmbledhje operative tĂ« gjendjes sĂ« klasterit («podâĂ«t po bien?»)*, por nuk Ă«shtĂ« i pĂ«rshtatshĂ«m pĂ«r rastet e pĂ«rmendura mĂ« sipĂ«r nĂ« mbĂ«shtetje dhe reagim ndaj incidenteve.
* Shën. përk.: Në këtë kuptim, mund t'ju interesojë gjithashtu plugini ynë , për të cilin kemi folur më në detaje në .
Raporti mbi Burimet e Kubernetes (kube-resource-report)
«Merrni tĂ« dhĂ«na nĂ« lidhje me kĂ«rkesat pĂ«r burime tĂ« podâĂ«ve dhe klasterit Kubernetes, krahasojini ato me konsumimin e burimeve dhe gjeneroni HTML statik».

genera raporte statike HTML mbi përdorimin e resurseve dhe shpërndarjen e kostove sipas ekipeve/aplikacioneve në klasterë. Raporti është në një farë mënyre i dobishëm për mbështetje dhe reagim ndaj incidenteve, pasi ndihmon në gjetjen më të shpejtë të klasterit ku është vendosur aplikacioni.
Shën. përk.: Në shikimin e informacionit për shpërndarjen e resurseve dhe kostot e tyre, mund të jetë gjithashtu e dobishme shërbimi dhe mjeti , të cilin ne .
Octant
«Një platformë e zgjerueshme në web për zhvilluesit, e cila ka për qëllim të ofrojë një kuptim më të mirë të kompleksitetit të klasterëve Kubernetes».

, e krijuar në VMware, është një produkt i ri për të cilin unë kam mësuar relativisht së fundmi. Ajo lejon që të eksploroni klasterin në makinë lokale (ka madje edhe vizualizime), megjithatë, ajo trajton problemin e mbështetjes dhe reagimit ndaj incidenteve vetëm në një shkallë të kufizuar. Disavantazhet e Octant:
- Nuk ka kërkesa për klasterët.
- Funksionon vetëm në makinë lokale (nuk vendoset në klaster).
- Nuk është e mundur të renditen/filtrohen objektet (mbështetet vetëm selektori i etiketave).
- Nuk mund të caktohen kolonat e personalizuara.
- Nuk është e mundur të nxjerrësh një listë objektesh sipas hapësirave të emrit.
Po ashtu, kam pasur probleme me qëndrueshmërinë e punës së Octant me klasterët Zalando: në disa CRD .
Po paraqes Pamjen e Uebit Kubernetes
"kubectl për uebin".

Pasi analizova opsionet e disponueshme për ndërfaqet e Kubernetes, vendosa të krijoj një të re: . Sepse, në thelb, më nevojitet të gjithë fuqia kubectl në ueb, dhe konkretisht:
- disponueshmëria e të gjitha operacioneve (lexim vetëm), në të cilat përdoruesit preferojnë të përdorin kubectl;
- tĂ« gjithĂ« URL-tĂ« duhet tĂ« jenĂ« tĂ« pĂ«rhershme dhe tĂ« pĂ«rfaqĂ«sojnĂ« faqen nĂ« formĂ«n origjinale, nĂ« mĂ«nyrĂ« qĂ« kolegĂ«t tĂ« mund tĂ« ndajnĂ« ato dhe tâi pĂ«rdorin nĂ« mjete tĂ« tjera;
- mbështetje për të gjitha objektet e Kubernetes, që do të lejojë zgjidhjen e problemeve të çdo lloji;
- listat e burimeve duhet të jenë të shkarkueshme për përdorim të mëtejshëm (në tabelat elektronike, mjete CLI si
grep) dhe ruajtje (për shembull, për postmortemë); - mbështetje për filtrimin e burimeve sipas etiketimeve (sipas analogjisë me
kubectl get .. -l); - mundësia për të krijuar lista të bashkuara të llojeve të ndryshme të burimeve (sipër analogjisë me
kubectl get all) për të marrë një pamje të përgjithshme operative ndërmjet kolegëve (për shembull, në procesin e reagimit ndaj një incidenti); - mundësi për të shtuar lidhje të thella "inteligjente" të personalizuara në mjete të tjera si panelet e monitorimit, regjistrat, regjistrat e aplikacioneve etj., për të lehtësuar gjetjen/përdorimin e burimeve dhe reagimin ndaj incidenteve;
- frontend-i duhet të jetë sa më i thjeshtë (HTML i pastër) për të shmangur probleme të rastësishme, si JavaScript-i që ngec;
- mbështetje për shumë grupe për të lehtësuar ndërveprimin gjatë konsultimeve në distancë (për shembull, për të mbajtur mend vetëm një URL);
- nëse është e mundur, analitika situative duhet të thjeshtohet (p.sh., me lidhje për shkarkimin e burimeve nga të gjitha grupet/hapësirat e emrave);
- mundësi shtesë për krijimin e lidhjeve fleksibël dhe nxjerrjen e informacionit tekstual, për shembull, për të mundësuar t'ju referoheni kolegëve në një pjesë të caktuar në përshkrimin e burimit (rreshti në YAML);
- mundësia për t'u përshtatur me kërkesat e klientëve specifikë, për shembull, duke lejuar krijimin e ƥabloneve të veçanta për shfaqje për CRD, pamje tabelash të veta, ndryshimin e stileve CSS;
- mjetet për studime të mëtejshme në linjën e komandës (p.sh., duke treguar komanda të plota
kubectl, të gatshme për kopjim);
Jashtë detyrave të zgjidhura në Kubernetes Web View (qëllime jo) ndërtuan:
- abstraksioni i objekteve Kubernetes;
- menaxhimi i aplikacioneve (p.sh., menaxhimi i deployment-eve, Helm chart-eve etj.);
- operacione të shkruar (duhet të kryhen përmes mjeteve të sigurta CI/CD dhe/ose GitOps);
- interfaci i bukur (JavaScript, tema etj.);
- visualizimet (shih. );
- analiza e kostove (shih. ).
Si ndihmon Kubernetes Web View në mbështetje dhe reagim ndaj incidenteve?
Mbështetje
- Të gjitha lidhjet janë të përhershme, që e lehtëson ndarjen e informacionit me kolegët.
- Mund të krijoni pamjet tuaja, për shembull, të nxirrni të gjitha Deployment-et dhe Pod-at me një etiketë të caktuar në dy klastera specifikë (emrat e disa klasterëve dhe llojeve të burimeve mund të specifikohen në lidhje, duke i ndarë ato me pika).
- Mund të referoheni në rreshta të caktuar në skedarin YAML të objektit, duke treguar për probleme të mundshme në specifikimin e objektit.

Kërkimi në klasterat në Kubernetes Web View
Reagimi ndaj incidenteve
- Kërkimi global (kërkimi global) lejon kërkimin e objekteve në të gjitha klasterat.
- Pamjet në formën e listave mund të shfaqin të gjitha objektet me një gjendje/shtyllë të caktuar në të gjitha klasterët (p.sh. na nevojitet të gjejmë të gjitha pod-et me statusin "Pending").
- Listat e objekteve mund të shkarkohen në formatin e vlerave të ndara me tabulator (TSV), për analizë të mëtejshme.
- lejojnë kalimin në panelet e monitorimit përkatëse dhe mjete të tjera.

Pamja Web e Kubernetes: lista e pod-eve me statusin "Pending" në të gjithë klasterët
Nëse dëshironi të provoni Pamjen Web të Kubernetes, rekomandoj të shihni ose të shihni .
Sigurisht, ndërfaqja mund të ishte më e mirë, për momentin Pamja Web e Kubernetes është një mjet për " përdorues të avancuar" që nuk ngurron të manipulojë me rrugët URL manualisht, nëse është e nevojshme. Nëse keni komente/shtesa/dëshira, ju lutem kontaktoni !
Ky artikull është një përmbledhje e arsyetimit që çoi në krijimin e Pamjes Web të Kubernetes. Do pasojnë të tjera! (Shën. përk.: Pritet që ato të dalin në .)
P.S. nga përkthyesi
Lexoni gjithashtu në blogun tonë:
- «»;
- «»;
- «»;
- «».
Burimi: habr.com
