Njoftimi i Pamjes së Uebit të Kubernetes (dhe një përmbledhje e shkurtër e ndërfaqeve të tjera të uebit për Kubernetes)

Shënim. përkth.: Autori i materialit origjinal është Henning Jacobs nga Zalando. Ai krijoi një ndërfaqe të re në internet për të punuar me Kubernetes, e cila pozicionohet si "kubectl për ueb". Pse u shfaq një projekt i ri me burim të hapur dhe cilat kritere nuk u plotësuan nga zgjidhjet ekzistuese - lexoni artikullin e tij.

Njoftimi i Pamjes së Uebit të Kubernetes (dhe një përmbledhje e shkurtër e ndërfaqeve të tjera të uebit për Kubernetes)

Në këtë postim, unë shqyrtoj ndërfaqet e ndryshme të internetit me burim të hapur Kubernetes, parashtroj kërkesat e mia për një ndërfaqe universale dhe shpjegoj pse kam zhvilluar Kubernetes WebView — një ndërfaqe e krijuar për ta bërë më të lehtë mbështetjen dhe zgjidhjen e problemeve të grupeve të shumta në të njëjtën kohë.

Raste te perdorimit

Në Zalando ne i shërbejmë një numri të madh përdoruesish të Kubernetes (900+) dhe grupimesh (100+). Ka disa raste të përdorimit të zakonshëm që do të përfitonin nga një mjet i dedikuar në internet:

  1. komunikimi me kolegët për mbështetje;
  2. reagimin ndaj incidenteve dhe hetimin e shkaqeve të tyre.

Mbështetje

Në përvojën time, komunikimet mbështetëse shpesh duken kështu:

— Ndihmë, shërbimi ynë XYZ nuk është i disponueshëm!
— Çfarë shihni kur performoni kubectl describe ingress ...?

Ose diçka e ngjashme për CRD:

— Kam një problem me shërbimin e identifikimit...
— Çfarë prodhon komanda? kubectl describe platformcredentialsset ...?

Një komunikim i tillë zakonisht zbret në futjen e variacioneve të ndryshme të komandës kubectl për të identifikuar problemin. Si rezultat, të dyja palët në bisedë detyrohen të kalojnë vazhdimisht midis terminalit dhe bisedës në internet, plus ata vëzhgojnë një situatë të ndryshme.

Prandaj, unë do të doja që frontendi i uebit Kubernetes të lejojë sa vijon:

  • përdoruesit mund të shkëmbejnë lidhje dhe vëzhgoni të njëjtën gjë;
  • do të ndihmonte shmangni gabimet njerëzore në mbështetje: për shembull, hyrja në grupin e gabuar në vijën e komandës, gabimet e shtypit në komandat CLI, etj.;
  • do të lejonte gjeneroni pikëpamjet tuaja për t'u dërguar kolegëve, domethënë, shtoni kolona etiketash, shfaqni shumë lloje burimesh në një faqe;
  • Në mënyrë ideale, ky mjet ueb duhet t'ju lejojë të vendosni lidhje "të thella" me seksione specifike të YAML (për shembull, duke vënë në dukje një parametër të pasaktë që po shkakton dështime).

Reagimi dhe analiza e incidentit

Përgjigjja ndaj incidenteve të infrastrukturës kërkon ndërgjegjësimin e situatës, aftësinë për të vlerësuar ndikimin dhe për të kërkuar modele në grupime. Disa shembuj të jetës reale:

  • Një shërbim kritik prodhimi ka probleme dhe ju duhet gjeni të gjitha burimet e Kubernetes me emër në të gjitha grupimetpër të zgjidhur problemet;
  • nyjet fillojnë të bien kur shkallëzohen dhe keni nevojë gjeni të gjitha grupet me statusin "Në pritje" në të gjitha grupimetpër të vlerësuar shtrirjen e problemit;
  • përdoruesit individualë po raportojnë një problem me DaemonSet të vendosur në të gjitha grupimet dhe duhet ta kuptojnë A është problemi total?.

Zgjidhja ime standarde në raste të tilla është diçka e tillë for i in $clusters; do kubectl ...; done. Natyrisht, është e mundur të zhvillohet një mjet që ofron aftësi të ngjashme.

Ndërfaqet ekzistuese të internetit të Kubernetes

Bota me burim të hapur të ndërfaqeve në internet për Kubernetes nuk është shumë e madhe*, kështu që u përpoqa të mbledh më shumë informacion duke përdorur Twitter:

Njoftimi i Pamjes së Uebit të Kubernetes (dhe një përmbledhje e shkurtër e ndërfaqeve të tjera të uebit për Kubernetes)

*Shpjegimi im për numrin e kufizuar të ndërfaqeve të uebit për Kubernetes: shërbimet cloud dhe shitësit e Kubernetes zakonisht ofrojnë frontet e tyre, kështu që tregu për ndërfaqen "e mirë" falas të Kubernetes është relativisht i vogël.

Përmes një tweet-i mësova për K8Dash, Kubernator и Oktant. Le t'i shikojmë ato dhe zgjidhjet e tjera ekzistuese me burim të hapur, le të përpiqemi të kuptojmë se cilat janë ato.

K8Dash

"K8Dash është mënyra më e thjeshtë për të menaxhuar një grup Kubernetes."

Njoftimi i Pamjes së Uebit të Kubernetes (dhe një përmbledhje e shkurtër e ndërfaqeve të tjera të uebit për Kubernetes)

K8Dash Duket mirë dhe ndihet shpejt, por ka një sërë disavantazhesh për rastet e përdorimit të listuara më sipër:

  • Punon vetëm brenda kufijve të një grupi.
  • Renditja dhe filtrimi janë të mundshme, por nuk kanë lidhje të përhershme.
  • Nuk ka mbështetje për Përkufizimet e Burimeve të personalizuara (CRD).

Kubernator

“Kubernator është një ndërfaqe alternative për Kubernetes. Ndryshe nga Paneli i nivelit të lartë Kubernetes, ai siguron kontroll të nivelit të ulët dhe shikueshmëri të shkëlqyer në të gjitha objektet në grup me aftësinë për të krijuar të reja, për t'i modifikuar ato dhe për të zgjidhur konfliktet. Duke qenë një aplikacion tërësisht nga ana e klientit (si kubectl), ai nuk kërkon ndonjë backend përveç vetë serverit Kubernetes API, dhe gjithashtu respekton rregullat e aksesit në grup."

Njoftimi i Pamjes së Uebit të Kubernetes (dhe një përmbledhje e shkurtër e ndërfaqeve të tjera të uebit për Kubernetes)

Ky është një përshkrim mjaft i saktë Kubernator. Fatkeqësisht, atij i mungojnë disa veçori:

  • Shërben vetëm një grup.
  • Nuk ka modalitet të pamjes së listës (d.m.th., nuk mund t'i shfaqni të gjitha podet me statusin "Në pritje").

Paneli i Kubernetes

"Kubernetes Dashboard është një ndërfaqe universale në internet për grupimet Kubernetes. Ai i lejon përdoruesit të menaxhojnë dhe zgjidhin problemet e aplikacioneve që funksionojnë në një grup, si dhe të menaxhojnë vetë grupin."

Njoftimi i Pamjes së Uebit të Kubernetes (dhe një përmbledhje e shkurtër e ndërfaqeve të tjera të uebit për Kubernetes)

Për fat të keq, Paneli i Kubernetes nuk më ndihmon vërtet me mbështetjen time dhe aktivitetet e reagimit ndaj incidenteve sepse:

  • nuk ka lidhje të përhershme, për shembull kur filtroj burimet ose ndryshoj rendin e renditjes;
  • nuk ka asnjë mënyrë të lehtë për të filtruar sipas statusit - për shembull, shikoni të gjitha podet me statusin "Në pritje";
  • mbështetet vetëm një grup;
  • CRD-të nuk mbështeten (kjo veçori është në zhvillim e sipër);
  • nuk ka kolona të personalizuara (të tilla si kolona të etiketuara sipas llojit kubectl -L).

Pamja operacionale e Kubernetes (kube-ops-view)

"System Dashboard Observer for K8s Cluster Space."

Njoftimi i Pamjes së Uebit të Kubernetes (dhe një përmbledhje e shkurtër e ndërfaqeve të tjera të uebit për Kubernetes)

У Pamja operacionale e Kubernetes Një qasje krejtësisht e ndryshme: ky mjet tregon vetëm nyjet dhe grupet e grupeve duke përdorur WebGL, pa asnjë detaj të objektit tekstual. Është i shkëlqyeshëm për një përmbledhje të shpejtë të shëndetit të grupit (a po bien podat?)*, por nuk është i përshtatshëm për rastet e përdorimit të mbështetjes dhe reagimit ndaj incidenteve të përshkruara më sipër.

* Shënim. përkth.: Në këtë kuptim, ju gjithashtu mund të jeni të interesuar për shtojcën tonë grafana-statusmap, për të cilën folëm më në detaje në Ky artikull.

Raporti i burimeve të Kubernetes (kube-resource-report)

"Mblidhni kërkesat për burime të grupeve të pod dhe Kubernetes, krahasojini ato me konsumin e burimeve dhe gjeneroni HTML statike."

Njoftimi i Pamjes së Uebit të Kubernetes (dhe një përmbledhje e shkurtër e ndërfaqeve të tjera të uebit për Kubernetes)

Raporti i Burimeve Kubernetes gjeneron raporte statike HTML mbi përdorimin e burimeve dhe shpërndarjen e kostos nëpër ekipe/aplikacione në grupe. Raporti është disi i dobishëm për mbështetjen dhe reagimin ndaj incidentit, sepse ju lejon të gjeni shpejt grupin ku është vendosur aplikacioni.

Shënim. përkth.: Një shërbim dhe mjet mund të jetë gjithashtu i dobishëm në shikimin e informacionit në lidhje me shpërndarjen e burimeve dhe kostot e tyre midis ofruesve të cloud Kubecost, të cilën ne e rishikojmë botuar së fundmi.

Oktant

"Një platformë uebi e zgjeruar për zhvilluesit e krijuar për të ofruar një kuptim më të madh të kompleksitetit të grupimeve Kubernetes."

Njoftimi i Pamjes së Uebit të Kubernetes (dhe një përmbledhje e shkurtër e ndërfaqeve të tjera të uebit për Kubernetes)

Oktant, krijuar nga VMware, është një produkt i ri për të cilin kam mësuar relativisht kohët e fundit. Me ndihmën e tij, është i përshtatshëm për të eksploruar grupin në një makinë lokale (madje ka edhe vizualizime), por ai trajton çështjet e mbështetjes dhe reagimit ndaj incidentit vetëm në një masë të kufizuar. Disavantazhet e Octant:

  • Nuk ka kërkim në grup.
  • Punon vetëm në makinën lokale (nuk vendoset në një grup).
  • Nuk mund të rendit/filtrohet objektet (mbështetet vetëm zgjedhësi i etiketës).
  • Nuk mund të specifikoni kolona të personalizuara.
  • Nuk mund të rendisni objektet sipas hapësirës së emrave.

Kam pasur gjithashtu probleme me qëndrueshmërinë e Octant me grupimet Zalando: në disa CRD ai po binte.

Prezantimi i Kubernetes Web View

"kubectl për ueb".

Njoftimi i Pamjes së Uebit të Kubernetes (dhe një përmbledhje e shkurtër e ndërfaqeve të tjera të uebit për Kubernetes)

Pasi analizova opsionet e disponueshme të ndërfaqes për Kubernetes, vendosa të krijoj një të re: Kubernetes WebView. Në fund të fundit, në fakt, më duhet vetëm gjithë fuqia kubectl në ueb, përkatësisht:

  • disponueshmëria e të gjitha operacioneve (vetëm për lexim) për të cilat përdoruesit preferojnë të përdorin kubectl;
  • të gjitha URL-të duhet të jenë të përhershme dhe të përfaqësojnë faqen në formën e saj origjinale, në mënyrë që kolegët t'i ndajnë ato dhe t'i përdorin ato në mjete të tjera;
  • mbështetje për të gjitha objektet Kubernetes, të cilat do t'ju lejojnë të zgjidhni çdo lloj problemi;
  • Listat e burimeve duhet të jenë të shkarkueshme për punë të mëtejshme (në tabela, mjetet CLI si p.sh grep) dhe ruajtje (për shembull, për postmortem);
  • mbështetje për zgjedhjen e burimeve sipas etiketës (e ngjashme me kubectl get .. -l);
  • aftësia për të krijuar lista të kombinuara të llojeve të ndryshme të burimeve (të ngjashme me kubectl get all) për të marrë një pamje të përbashkët operacionale midis kolegëve (për shembull, gjatë një reagimi ndaj incidentit);
  • aftësia për të shtuar lidhje të thella inteligjente të personalizuara në mjete të tjera si pult, regjistrat, regjistrat e aplikacioneve, etj. për të lehtësuar zgjidhjen/zgjidhjen e gabimeve dhe reagimin ndaj incidenteve;
  • Pjesa e përparme duhet të jetë sa më e thjeshtë që të jetë e mundur (HTML e pastër) për të shmangur probleme të rastësishme, të tilla si JavaScript i ngrirë;
  • mbështetje për grupe të shumta për të thjeshtuar ndërveprimin gjatë konsultimit në distancë (për shembull, për të mbajtur mend vetëm një URL);
  • Nëse është e mundur, analiza e situatës duhet të thjeshtohet (për shembull, me lidhje për shkarkimin e burimeve për të gjitha grupimet/hapësirat e emrave);
  • mundësi shtesë për krijimin e lidhjeve fleksibël dhe për të theksuar informacionin e tekstit, për shembull, në mënyrë që t'i drejtoni kolegët në një seksion specifik në përshkrimin e burimit (një rresht në YAML);
  • aftësia për t'u përshtatur me kërkesat e një klienti specifik, për shembull, duke ju lejuar të krijoni shabllone të veçantë të shfaqjes për CRD, pamjet tuaja të tabelës dhe të ndryshoni stilet CSS;
  • mjete për eksplorim të mëtejshëm në vijën e komandës (për shembull, duke treguar komandat e plota kubectl, gati për kopjim);

Përtej detyrave të zgjidhura në Kubernetes Web View (jo gola) mbeti:

  • abstragimi i objekteve Kubernetes;
  • menaxhimi i aplikacioneve (për shembull, menaxhimi i vendosjes, diagramet e Helm-it, etj.);
  • operacionet e shkrimit (duhet të bëhen përmes mjeteve të sigurta CI/CD dhe/ose GitOps);
  • ndërfaqe e bukur (JavaScript, tema, etj.);
  • vizualizimi (shih kube-ops-view);
  • analiza e kostos (shih kube-resource-raport).

Si ndihmon Kubernetes Web View me mbështetjen dhe reagimin ndaj incidentit?

Mbështetje

  • Të gjitha lidhjet janë të përhershme, gjë që e bën më të lehtë shkëmbimin e informacionit me kolegët.
  • Ju mund të krijoni idetë tuaja, për shembull, shfaqni të gjitha Deployments dhe Pods me një etiketë specifike në dy grupime specifike (disa emra grupesh dhe lloje burimesh mund të specifikohen në lidhje, të ndara me presje).
  • Ju mund t'i referoheni linja specifike në një skedar YAML objekt, duke treguar probleme të mundshme në specifikimin e objektit.

Njoftimi i Pamjes së Uebit të Kubernetes (dhe një përmbledhje e shkurtër e ndërfaqeve të tjera të uebit për Kubernetes)
Kërko sipas grupimeve në Kubernetes Web View

Përgjigja ndaj incidentit

  • Kërkimi global (kërkim global) ju lejon të kërkoni për objekte në të gjitha grupimet.
  • Pamjet e listës mund të shfaqë të gjitha objektet me një gjendje/kolona të caktuar në të gjitha grupimet (për shembull, ne duhet të gjejmë të gjitha podet me statusin "Në pritje").
  • Lista e objekteve mund të shkarkohet në formatin e vlerës së ndarë me skeda (TSV) për analizë të mëvonshme.
  • Lidhje të jashtme të personalizueshme Ju lejon të kaloni në panelet përkatëse dhe mjete të tjera.

Njoftimi i Pamjes së Uebit të Kubernetes (dhe një përmbledhje e shkurtër e ndërfaqeve të tjera të uebit për Kubernetes)
Pamja e Uebit të Kubernetes: lista e pods me statusin "Në pritje" në të gjitha grupimet

Nëse dëshironi të provoni Kubernetes Web View, ju rekomandoj të kontrolloni dokumentacionin ose shikoni demonstrim i drejtpërdrejtë.

Sigurisht, ndërfaqja mund të jetë më e mirë, por tani për tani Kubernetes Web View është një mjet për "përdoruesit e avancuar" të cilët nuk i shmangen manipulimit manual të shtigjeve të URL-së nëse është e nevojshme. Nëse keni ndonjë koment / shtesë / sugjerim, ju lutemi kontaktoni me mua në Twitter!

Ky artikull është një histori e shkurtër e sfondit që çoi në krijimin e Kubernetes Web View. Më shumë do të pasojnë! (Shënim. përkth.: Ata duhet të priten në blogu i autorit.)

PS nga përkthyesi

Lexoni edhe në blogun tonë:

Burimi: www.habr.com

Shto një koment