TillkÀnnagivande av Kubernetes webbvy (och en kort översikt över andra webbgrÀnssnitt för Kubernetes)

Notera. transl.: Författaren till originalmaterialet Àr Henning Jacobs frÄn Zalando. Han skapade ett nytt webbgrÀnssnitt för att arbeta med Kubernetes, som Àr positionerat som "kubectl för webben." Varför ett nytt Open Source-projekt dök upp och vilka kriterier uppfylldes inte av befintliga lösningar - lÀs hans artikel.

TillkÀnnagivande av Kubernetes webbvy (och en kort översikt över andra webbgrÀnssnitt för Kubernetes)

I det hĂ€r inlĂ€gget granskar jag de olika Kubernetes webbgrĂ€nssnitt med öppen kĂ€llkod, lĂ€gger upp mina krav för ett universellt anvĂ€ndargrĂ€nssnitt och förklarar varför jag utvecklade Kubernetes WebView — ett grĂ€nssnitt utformat för att göra det enklare att stödja och felsöka flera kluster samtidigt.

AnvÀndningsfall

PÄ Zalando betjÀnar vi ett stort antal Kubernetes-anvÀndare (900+) och kluster (100+). Det finns ett par vanliga anvÀndningsfall som skulle dra nytta av ett dedikerat webbverktyg:

  1. kommunikation med kollegor för stöd;
  2. reagera pÄ incidenter och undersöka deras orsaker.

Support

Enligt min erfarenhet ser supportkommunikation ofta ut sÄ hÀr:

— HjĂ€lp, vĂ„r tjĂ€nst XYZ Ă€r inte tillgĂ€nglig!
— Vad ser du nĂ€r du upptrĂ€der kubectl describe ingress ...?

Eller nÄgot liknande för CRD:

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

SÄdan kommunikation handlar vanligtvis om att ange olika varianter av kommandot kubectl för att identifiera problemet. Som ett resultat tvingas bÄda parter i konversationen att stÀndigt vÀxla mellan terminalen och webbchatten, plus att de observerar en annan situation.

DÀrför skulle jag vilja att Kubernetes webbgrÀnssnitt tillÄter följande:

  • anvĂ€ndare kunde utbyta lĂ€nkar och observera samma sak;
  • skulle hjĂ€lpa undvika mĂ€nskliga misstag till stöd: till exempel logga in i fel kluster pĂ„ kommandoraden, stavfel i CLI-kommandon, etc.;
  • skulle tillĂ„ta skapa dina egna Ă„sikter att skicka till kollegor, det vill sĂ€ga lĂ€gga till taggkolumner, visa mĂ„nga typer av resurser pĂ„ en sida;
  • Helst bör detta webbverktyg lĂ„ta dig stĂ€lla in "djupa" lĂ€nkar till specifika delar av YAML (till exempel att peka ut en felaktig parameter som orsakar fel).

Incidentrespons och analys

Att svara pÄ infrastrukturincidenter krÀver situationsmedvetenhet, förmÄga att bedöma pÄverkan och leta efter mönster i kluster. NÄgra exempel frÄn verkligheten:

  • En kritisk produktionstjĂ€nst har problem och du behöver det hitta alla Kubernetes-resurser efter namn i alla klusteratt felsöka;
  • noder börjar falla nĂ€r skalning och du behöver hitta alla poddar med statusen "Pending" i alla klusteratt bedöma omfattningen av problemet;
  • Individuella anvĂ€ndare rapporterar ett problem med DaemonSet distribuerat över alla kluster och mĂ„ste ta reda pĂ„ det Är problemet totalt?.

Min standardlösning i sÄdana fall Àr ungefÀr for i in $clusters; do kubectl ...; done. Uppenbarligen skulle ett verktyg kunna utvecklas som ger liknande möjligheter.

Befintliga Kubernetes webbgrÀnssnitt

Den öppna kÀllkodsvÀrlden av webbgrÀnssnitt till Kubernetes Àr inte sÀrskilt stor*, sÄ jag försökte samla in mer information med hjÀlp av Twitter:

TillkÀnnagivande av Kubernetes webbvy (och en kort översikt över andra webbgrÀnssnitt för Kubernetes)

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

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

K8Dash

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

TillkÀnnagivande av Kubernetes webbvy (och en kort översikt över andra webbgrÀnssnitt för Kubernetes)

K8Dash Ser bra ut och kÀnns snabbt, men har ett antal nackdelar för anvÀndningsfallen som anges ovan:

  • Fungerar endast inom grĂ€nserna för ett kluster.
  • Sortering och filtrering Ă€r möjliga, men har inga permalĂ€nkar.
  • Det finns inget stöd för Custom Resource Definitions (CRDs).

Kubernator

"Kubernator Àr ett alternativt anvÀndargrÀnssnitt för Kubernetes. Till skillnad frÄn Kubernetes Dashboard pÄ hög nivÄ ger den kontroll pÄ lÄg nivÄ och utmÀrkt insyn i alla objekt i klustret med möjligheten att skapa nya, redigera dem och lösa konflikter. Eftersom det Àr en helt klientsidans applikation (som kubectl), krÀver den ingen annan backend Àn sjÀlva Kubernetes API-servern och respekterar ocksÄ klusterÄtkomstregler."

TillkÀnnagivande av Kubernetes webbvy (och en kort översikt över andra webbgrÀnssnitt för Kubernetes)

Detta Àr en ganska korrekt beskrivning Kubernator. TyvÀrr saknar den nÄgra funktioner:

  • Serverar endast ett kluster.
  • Det finns inget listvylĂ€ge (dvs. du kan inte visa alla poddar med statusen "VĂ€ntar").

Kubernetes instrumentpanel

"Kubernetes Dashboard Àr ett universellt webbgrÀnssnitt för Kubernetes-kluster. Det lÄter anvÀndare hantera och felsöka applikationer som körs i ett kluster, samt hantera sjÀlva klustret."

TillkÀnnagivande av Kubernetes webbvy (och en kort översikt över andra webbgrÀnssnitt för Kubernetes)

Olyckligtvis, Kubernetes instrumentpanel hjÀlper inte riktigt med mina support- och incidentresponsaktiviteter eftersom det:

  • det finns inga permanenta lĂ€nkar, till exempel nĂ€r jag filtrerar resurser eller Ă€ndrar sorteringsordningen;
  • det finns inget enkelt sĂ€tt att filtrera efter status - se till exempel alla poddar med statusen "VĂ€ntar";
  • endast ett kluster stöds;
  • CRD:er stöds inte (denna funktion Ă€r under utveckling);
  • inga anpassade kolumner (som kolumner mĂ€rkta efter typ kubectl -L).

Kubernetes Operational View (kube-ops-view)

"System Dashboard Observer för K8s Cluster Space."

TillkÀnnagivande av Kubernetes webbvy (och en kort översikt över andra webbgrÀnssnitt för Kubernetes)

У Kubernetes operativa vy Ett helt annat tillvÀgagÄngssÀtt: det hÀr verktyget visar bara klusternoder och poddar med WebGL, utan nÄgra textobjektdetaljer. Det Àr bra för en snabb överblick över klustrets hÀlsa (faller baljor?)*, men det Àr inte lÀmpligt för de fall av support och incidentrespons som beskrivs ovan.

* Notera. transl.: I den meningen kan du ocksÄ vara intresserad av vÄrt plugin grafana-statuskarta, som vi pratade mer om i den hÀr artikeln.

Kubernetes resursrapport (kube-resursrapport)

"Samla in pod- och Kubernetes-klusterresursbegÀranden, jÀmför dem med resursförbrukning och generera statisk HTML."

TillkÀnnagivande av Kubernetes webbvy (och en kort översikt över andra webbgrÀnssnitt för Kubernetes)

Kubernetes resursrapport genererar statiska HTML-rapporter om resursanvÀndning och kostnadsfördelning mellan team/applikationer i kluster. Rapporten Àr lite anvÀndbar för support och incidentrespons eftersom den gör att du snabbt kan hitta klustret dÀr applikationen Àr utplacerad.

Notera. transl.: En tjÀnst och ett verktyg kan ocksÄ vara anvÀndbart för att visa information om allokering av resurser och deras kostnader bland molnleverantörer Kubecost, som vi granskar nyligen publicerat.

Oktant

"En utbyggbar webbplattform för utvecklare utformad för att ge större förstÄelse för komplexiteten i Kubernetes-kluster."

TillkÀnnagivande av Kubernetes webbvy (och en kort översikt över andra webbgrÀnssnitt för Kubernetes)

Oktant, skapad av VMware, Àr en ny produkt som jag lÀrde mig om relativt nyligen. Med dess hjÀlp Àr det bekvÀmt att utforska klustret pÄ en lokal maskin (det finns till och med visualiseringar), men det tar bara upp frÄgorna om support och incidentrespons i begrÀnsad utstrÀckning. Nackdelar med Octant:

  • Ingen klustersökning.
  • Fungerar endast pĂ„ den lokala datorn (distribueras inte till ett kluster).
  • Kan inte sortera/filtrera objekt (endast etikettvĂ€ljare stöds).
  • Du kan inte ange anpassade kolumner.
  • Du kan inte lista objekt efter namnutrymme.

Jag hade ocksÄ problem med stabiliteten hos Octant med Zalando-kluster: pÄ vissa CRD:er han höll pÄ att falla.

Vi presenterar Kubernetes Web View

"kubectl för webben".

TillkÀnnagivande av Kubernetes webbvy (och en kort översikt över andra webbgrÀnssnitt för Kubernetes)

Efter att ha analyserat de tillgÀngliga grÀnssnittsalternativen för Kubernetes bestÀmde jag mig för att skapa ett nytt: Kubernetes WebView. NÀr allt kommer omkring behöver jag faktiskt bara all kraft kubectl pÄ webben, nÀmligen:

  • tillgĂ€nglighet för alla (skrivskyddade) operationer för vilka anvĂ€ndare föredrar att anvĂ€nda kubectl;
  • alla webbadresser mĂ„ste vara permanenta och representera sidan i dess ursprungliga form sĂ„ att kollegor kan dela dem och anvĂ€nda dem i andra verktyg;
  • stöd för alla Kubernetes-objekt, vilket gör att du kan lösa alla typer av problem;
  • resurslistor bör vara nedladdningsbara för vidare arbete (i kalkylblad, CLI-verktyg som grep) och förvaring (till exempel för obduktioner);
  • stöd för att vĂ€lja resurser efter etikett (liknande kubectl get .. -l);
  • möjligheten att skapa kombinerade listor över olika typer av resurser (liknande kubectl get all) för att fĂ„ en gemensam operativ bild bland kollegor (till exempel under en incidentrespons);
  • möjligheten att lĂ€gga till anpassade smarta djuplĂ€nkar till andra verktyg sĂ„som instrumentpaneler, loggare, applikationsregister, etc. för att underlĂ€tta felsökning/lösning av fel och reagera pĂ„ incidenter;
  • GrĂ€nssnittet bör vara sĂ„ enkelt som möjligt (ren HTML) för att undvika slumpmĂ€ssiga problem, sĂ„som fryst JavaScript;
  • stöd för flera kluster för att förenkla interaktion under fjĂ€rrkonsultation (till exempel för att komma ihĂ„g endast en URL);
  • Om möjligt bör situationsanalys förenklas (till exempel med lĂ€nkar för att ladda ner resurser för alla kluster/namnutrymmen);
  • ytterligare möjligheter att skapa flexibla lĂ€nkar och markera textinformation, till exempel, sĂ„ att du kan peka kollegor pĂ„ ett specifikt avsnitt i resursbeskrivningen (en rad i YAML);
  • möjligheten att anpassa till kraven hos en specifik klient, till exempel, sĂ„ att du kan skapa speciella visningsmallar för CRD:er, dina egna tabellvyer och Ă€ndra CSS-stilar;
  • verktyg för vidare utforskning pĂ„ kommandoraden (till exempel visa fullstĂ€ndiga kommandon kubectl, redo för kopiering);

Utöver de uppgifter som lösts i Kubernetes Web View (icke-mÄl) förblev:

  • abstraktion av Kubernetes-objekt;
  • applikationshantering (till exempel distributionshantering, styrdiagram, etc.);
  • skrivoperationer (mĂ„ste göras genom sĂ€kra CI/CD- och/eller GitOps-verktyg);
  • vackert grĂ€nssnitt (JavaScript, teman, etc.);
  • visualisering (se kube-ops-vy);
  • kostnadsanalys (se kube-resurs-rapport).

Hur hjÀlper Kubernetes Web View med support och incidentrespons?

Support

  • Alla lĂ€nkar Ă€r permanenta, vilket gör det lĂ€ttare att utbyta information med kollegor.
  • Du kan skapa dina idĂ©er, till exempel, visa alla distributioner och poddar med en specifik etikett i tvĂ„ specifika kluster (flera klusternamn och resurstyper kan anges i lĂ€nken, separerade med kommatecken).
  • Du kan hĂ€nvisa till specifika rader i en YAML-fil objekt, vilket indikerar potentiella problem i objektspecifikationen.

TillkÀnnagivande av Kubernetes webbvy (och en kort översikt över andra webbgrÀnssnitt för Kubernetes)
Sök efter kluster i Kubernetes webbvy

Incidentrespons

  • Global sökning (global sökning) lĂ„ter dig söka efter objekt i alla kluster.
  • Listvyer kan visa alla objekt med ett visst tillstĂ„nd/kolumn i alla kluster (vi mĂ„ste till exempel hitta alla poddar med statusen "Pending").
  • Listor över objekt kan laddas ner i TSV-format (tab-separated value) för senare analys.
  • Anpassningsbara externa lĂ€nkar LĂ„ter dig byta till relaterade instrumentpaneler och andra verktyg.

TillkÀnnagivande av Kubernetes webbvy (och en kort översikt över andra webbgrÀnssnitt för Kubernetes)
Kubernetes webbvy: lista över pods med statusen "VÀntande" i alla kluster

Om du vill prova Kubernetes Web View rekommenderar jag att du checkar ut dokumentation eller titta pÄ live-demo.

Visst kan grÀnssnittet vara bÀttre, men för nÀrvarande Àr Kubernetes Web View ett verktyg för "avancerade anvÀndare" som inte drar sig för att manipulera URL-sökvÀgar manuellt om det behövs. Om du har nÄgra kommentarer/tillÀgg/förslag, vÀnligen kontakta med mig pÄ Twitter!

Den hÀr artikeln Àr en kort historik över bakgrunden som ledde till skapandet av Kubernetes Web View. Fler kommer att följa! (Notera. transl.: De bör förvÀntas in författarens blogg.)

PS frÄn översÀttaren

LÀs Àven pÄ vÄr blogg:

KĂ€lla: will.com

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