TillkÀnnagivande av Kubernetes Web View-webbgrÀnssnittet (och en kort översikt över andra web UI för Kubernetes)

Obs. övers.: Den ursprungliga artikelförfattaren Àr Henning Jacobs frÄn Zalando. Han har skapat ett nytt webbgrÀnssnitt för att arbeta med Kubernetes, som marknadsförs som "kubectl för webben". LÀs hans artikel för att ta reda pÄ varför detta nya Open Source-projekt har dykt upp och vilka kriterier som inte uppfylldes av de befintliga lösningarna.

TillkÀnnagivande av Kubernetes Web View-webbgrÀnssnittet (och en kort översikt över andra web UI för Kubernetes)

I denna publikation behandlar jag olika webbgrĂ€nssnitt för Kubernetes med öppen kĂ€llkod, presenterar mina krav pĂ„ en universell UI och berĂ€ttar varför jag utvecklade Kubernetes Web View — ett grĂ€nssnitt som syftar till att underlĂ€tta stöd och felsökning i flera kluster samtidigt.

AnvÀndningsscenarier

PÄ Zalando betjÀnar vi ett stort antal Kubernetes-anvÀndare (över 900) och kluster (över 100). Det finns ett par typiska anvÀndningsscenarier dÀr en specialiserad webbverktyg skulle vara mycket anvÀndbar:

  1. kommunikation med kollegor inom supporten;
  2. reaktion pÄ incidenter och utredning av deras orsaker.

Support

Enligt min erfarenhet ser kommunikationen inom supporten ofta ut som följer:

— hjĂ€lp, vĂ„r tjĂ€nst XYZ Ă€r otillgĂ€nglig!
— Vad ser du nĂ€r du kör kubectl describe ingress ...?

Eller nÄgot liknande för CRD:

— Jag har ett problem med identifieringstjĂ€nsten...
— Vad ger kommandot kubectl describe platformcredentialsset ...?

SÄdan kommunikation handlar vanligtvis om att skriva in olika varianter av kommandot kubectl för att etablera problemet. Resultatet Àr att bÄda parter i samtalet stÀndigt mÄste vÀxla mellan terminalen och webbchatten, och de ser olika situationer.

DÀrför önskar jag att webbfronten för Kubernetes skulle möjliggöra följande:

  • anvĂ€ndare skulle kunna dela lĂ€nkar och se samma sak;
  • hjĂ€lpa till att undvika mĂ€nskliga misstag i supporten: till exempel att logga in i fel kluster i kommandoraden, stavfel i CLI-kommandon osv.;
  • skulle möjliggöra att generera egna vyer för att skicka till kollegor, det vill sĂ€ga att lĂ€gga till etikettkolumner, visa flera typer av resurser pĂ„ en och samma sida;
  • idealiskt bör detta webbverktyg möjliggöra att sĂ€tta "djupa" lĂ€nkar till specifika delar av YAML (till exempel peka pĂ„ en felaktig parameter som orsakar krascher).

Reaktion pÄ incidenter och analys

Reagering pÄ incidenter i infrastrukturen krÀver situationsmedvetenhet, förmÄga att bedöma pÄverkan och leta efter mönster i kluster. NÄgra verkliga exempel:

  • ett kritiskt produktionssystem har problem och du behöver hitta alla Kubernetes-resurser efter namn i alla kluster, för att Ă„tgĂ€rda problem;
  • noder börjar falla vid skalning och du behöver hitta alla poddar med status "Pending" i alla kluster, för att bedöma omfattningen av problemet;
  • individuella anvĂ€ndare rapporterar ett problem med DaemonSet som Ă€r distribuerat i alla kluster och det behöver utredas, om problemet Ă€r omfattande.

Min standardlösning i sÄdana fall Àr nÄgot i stil med for i in $clusters; do kubectl ...; done. Uppenbarligen kan ett verktyg utvecklas som erbjuder liknande möjligheter.

Befintliga webbgrÀnssnitt för Kubernetes

Öppen kĂ€llkod-vĂ€rlden av webbgrĂ€nssnitt för Kubernetes Ă€r inte sĂ„ stor*, sĂ„ jag försökte samla mer information med hjĂ€lp av Twitter:

TillkÀnnagivande av Kubernetes Web View-webbgrÀnssnittet (och en kort översikt över andra web UI för Kubernetes)

* Min förklaring av det begrÀnsade antalet webbgrÀnssnitt för Kubernetes: MolntjÀnster och Kubernetes-leverantörer erbjuder ofta sina egna grÀnssnitt, sÄ marknaden för "bra" gratis Kubernetes UI Àr relativt liten.

Genom en tweet fick jag veta om K8Dash, Kubernator och Octant. LÄt oss titta pÄ dem och andra befintliga Open Source-lösningar, och försöka förstÄ vad de handlar om.

K8Dash

"K8Dash Àr det enklaste sÀttet att hantera ett Kubernetes-kluster."

TillkÀnnagivande av Kubernetes Web View-webbgrÀnssnittet (och en kort översikt över andra web UI för Kubernetes)

K8Dash ser bra ut och kÀnns responsivt, men har flera nackdelar för de ovan nÀmnda anvÀndningsscenarierna:

  • Fungerar endast inom ett kluster.
  • Sortering och filtrering Ă€r möjliga, men har inga permanenta lĂ€nkar.
  • Ingen stöd för Custom Resource Definitions (CRDs).

Kubernator

"Kubernator Àr ett alternativt UI för Kubernetes. Till skillnad frÄn det högkvalitativa grÀnssnittet Kubernetes Dashboard erbjuder den lÄg nivÄ kontroll och en utmÀrkt översikt över alla objekt i klustret med möjlighet att skapa nya, redigera dem och lösa konflikter. Som en helt klientapplikation (som kubectl) krÀver den ingen backend förutom sjÀlva Kubernetes API-servern och beaktar Àven Ätkomstreglerna för klustret."

TillkÀnnagivande av Kubernetes Web View-webbgrÀnssnittet (och en kort översikt över andra web UI för Kubernetes)

Detta Àr en ganska exakt beskrivning av Kubernator.TyvÀrr saknar det vissa funktioner:

  • BetjĂ€nar endast ett kluster.
  • Det finns inget listvy-lĂ€ge (dvs. det gĂ„r inte att visa alla poddar med status "Pending").

Kubernetes Dashboard

„Kubernetes Dashboard Ă€r ett universellt webgrĂ€nssnitt för Kubernetes-kluster. Det gör det möjligt för anvĂ€ndare att hantera applikationer som körs i klustret och felsöka dem, samt att hantera sjĂ€lva klustret.”

TillkÀnnagivande av Kubernetes Web View-webbgrÀnssnittet (och en kort översikt över andra web UI för Kubernetes)

TyvÀrr, Kubernetes Dashboard hjÀlper det inte sÀrskilt mycket i mina insatser för stöd och incidenthantering, eftersom det:

  • inte har permanenta lĂ€nkar, till exempel nĂ€r jag filtrerar resurser eller Ă€ndrar sorteringsordning;
  • det finns inget enkelt sĂ€tt att filtrera efter status – till exempel att se alla poddar med status "Pending";
  • det stöder bara ett kluster;
  • CRD stöds inte (den funktionen Ă€r under utveckling);
  • det finns inga anpassade kolumner (till exempel kolumner med etiketter liknande kubectl -L).

Kubernetes Operational View (kube-ops-view)

„Översiktspanel för K8s-klusterutrymmen.”

TillkÀnnagivande av Kubernetes Web View-webbgrÀnssnittet (och en kort översikt över andra web UI för Kubernetes)

Hos Kubernetes Operational View har en helt annan ansats: detta verktyg visar endast klusterknoten och poddar med hjÀlp av WebGL, utan nÄgra textuella detaljer om objekten. Det Àr utmÀrkt för en operativ översikt av klusterstatusen ("faller poddar?"), men det Àr inte bra för de anvÀndningsfall som beskrivits ovan i stöd och incidenthantering.

* Obs. övers.: I detta avseende kan du ocksÄ vara intresserad av vÄr plugin grafana-statusmap, som vi har berÀttat mer om i denna artikel.

Kubernetes Resource Report (kube-resource-report)

„Samla in information om resursförfrĂ„gningar för poddar och Kubernetes-klustret, jĂ€mför dem med resursanvĂ€ndning och generera statisk HTML.”

TillkÀnnagivande av Kubernetes Web View-webbgrÀnssnittet (och en kort översikt över andra web UI för Kubernetes)

Kubernetes Resource Report genererar statiska HTML-rapporter om resursanvÀndning och kostnadsfördelning mellan team/applikationer i kluster. Rapporten Àr delvis anvÀndbar för stöd och incidenthantering eftersom den gör det möjligt att snabbare hitta det kluster dÀr applikationen Àr utplacerad.

Obs. övers.: I översikten av resursfördelning och dess kostnader kan Àven tjÀnsten och verktyget Kubecostvara anvÀndbart, som vi.

Octant

nyligen publicerade en översyn av, som Ă€r en „utvidgningsbar webbaserad plattform för utvecklare, avsedd att ge en bĂ€ttre förstĂ„else för komplexiteten i Kubernetes-kluster.”

TillkÀnnagivande av Kubernetes Web View-webbgrÀnssnittet (och en kort översikt över andra web UI för Kubernetes)

Octant, skapad i VMware, Àr en ny produkt som jag har lÀrt mig om relativt nyligen. Med hjÀlp av den Àr det enkelt att utforska klustret pÄ den lokala maskinen (det finns till och med visualiseringar), men den berör problematiken kring stöd och incidenthantering endast i begrÀnsad omfattning. Nackdelar med Octant:

  • Ingen sökning mellan kluster.
  • Fungerar endast pĂ„ lokala maskiner (kan inte distribueras i kluster).
  • Det gĂ„r inte att sortera/filtera objekt (endast label-selector stöds).
  • Det gĂ„r inte att definiera anpassade kolumner.
  • Det gĂ„r inte att lista objekt efter namnrymder.

Jag har ocksÄ haft problem med stabiliteten i Octant med Zalando-kluster: pÄ vissa CRD den kraschade.

Jag presenterar Kubernetes Web View

”kubectl för webben”.

TillkÀnnagivande av Kubernetes Web View-webbgrÀnssnittet (och en kort översikt över andra web UI för Kubernetes)

Efter att ha analyserat de tillgÀngliga grÀnssnitten för Kubernetes bestÀmde jag mig för att skapa ett nytt: Kubernetes Web View. För i grunden behöver jag bara all kraft kubectl i webben, nÀmligen:

  • tillgĂ€nglighet för alla (read-only) operationer som anvĂ€ndare föredrar att anvĂ€nda kubectl för;
  • alla URL:er bör vara permanenta och representera sidan i sitt originalskick sĂ„ att kollegor kan dela dem och anvĂ€nda dem i andra verktyg;
  • stöd för alla Kubernetes-objekt, vilket gör det möjligt att lösa problem av alla typer;
  • resurslistor ska vara nedladdningsbara för vidare arbete (i kalkylblad, CLI-verktyg som grep) och lagring (till exempel för postmortems);
  • stöd för resursurval baserat pĂ„ labels (som med kubectl get .. -l);
  • möjlighet att skapa sammanstĂ€llda listor över olika typer av resurser (som med kubectl get all) för att fĂ„ en övergripande operationell bild bland kollegor (till exempel under incidenthantering);
  • möjlighet att lĂ€gga till anpassade ”intelligenta” djup-lĂ€nkar till andra verktyg som dashboards, loggverktyg, applikationsregister osv. för att underlĂ€tta sökning/avhjĂ€lpning och incidenthantering;
  • frontend ska vara sĂ„ enkel som möjligt (ren HTML) för att undvika oavsiktliga problem, sĂ„som hĂ€ngande JavaScript;
  • stöd för flera kluster för att förenkla interaktionen vid fjĂ€rrkonsultation (till exempel för att komma ihĂ„g endast en URL);
  • situationsanalysen bör förenklas om möjligt (till exempel med lĂ€nkar för nedladdning av resurser över alla kluster/namnrymder);
  • ytterligare funktioner för att skapa flexibla lĂ€nkar och extrahera textinformation, till exempel för att kunna ange specifika avsnitt i resursbeskrivningen (rad i YAML);
  • möjlighet att anpassa efter specifika kundkrav, exempelvis genom att tillĂ„ta skapande av specialanpassade visningsmallar för CRD, egna tabellrepresentationer, Ă€ndra CSS-stilar;
  • verktyg för vidare studier i kommandoraden (till exempel genom att visa kompletta kommandon kubectl, redo för kopiering);

Utanför de uppgifter som hanteras av Kubernetes Web View (icke-mÄl) ÄterstÄr:

  • abstraktion av Kubernetes-objekt;
  • hantering av applikationer (till exempel hantering av deploymentar, Helm-diagram osv.);
  • skrivoperationer (mĂ„ste utföras via ett sĂ€kert CI/CD- och/eller GitOps-verktyg);
  • ett vackert grĂ€nssnitt (JavaScript, teman osv.);
  • visualiseringar (se kube-ops-view);
  • kostnadsanalys (se kube-resource-report).

Hur hjÀlper Kubernetes Web View till med incidenthantering och respons?

Support

  • Alla lĂ€nkar Ă€r permanenta, vilket underlĂ€ttar informationsutbytet med kollegor.
  • Det gĂ„r att skapa egna vyer, till exempel för att visa alla deploymentar och pods med en viss etikett i tvĂ„ specifika kluster (flera klusternamn och resurstyp kan anges i lĂ€nken, Ă„tskilda med kommatecken).
  • Det gĂ„r att referera till specifika rader i YAML-filen för objektet, vilket pekar pĂ„ potentiella problem i objektets specifikation.

TillkÀnnagivande av Kubernetes Web View-webbgrÀnssnittet (och en kort översikt över andra web UI för Kubernetes)
Sökning av kluster i Kubernetes Web View

Incidenthantering

  • Global sökning (global search) möjliggör sökning av objekt i alla kluster.
  • Listvyer kan visa alla objekt med ett visst tillstĂ„nd/kolumn i alla kluster (till exempel, vi behöver hitta alla pods med status "Pending").
  • Objektslistor kan laddas ner i tabulatoravgrĂ€nsade vĂ€rden (TSV) för vidare analys.
  • Anpassningsbara externa lĂ€nkar möjliggör att vĂ€xla till relevanta övervakningspaneler och andra verktyg.

TillkÀnnagivande av Kubernetes Web View-webbgrÀnssnittet (och en kort översikt över andra web UI för Kubernetes)
Kubernetes Web View: lista över pods med status "Pending" i alla kluster

Om du vill prova Kubernetes Web View rekommenderar jag att du bekantar dig med dokumentationen eller kollar pÄ en live demoversion.

SjÀlvklart, grÀnssnittet skulle kunna vara bÀttre, och hittills Àr Kubernetes Web View ett verktyg för "erfarna anvÀndare" som inte Àr rÀdda för att manipulera URL-vÀgar manuellt om det behövs. Om du har nÄgra Äsikter/kommentarer/önskemÄl, vÀnligen kontakta mig pÄ Twitter!

Denna artikel Àr en kort berÀttelse om de förutsÀttningar som ledde till skapandet av Kubernetes Web View. Fler artiklar följer! (Obs. övers.: De bör förvÀntas i bloggen för författaren.)

P.S. FrÄn översÀttaren

LÀs Àven i vÄr blogg:

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster