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.

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 â 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:
- kommunikation med kollegor för stöd;
- 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 :

*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 , О . 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."

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

Detta Àr en ganska korrekt beskrivning . 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."

Olyckligtvis, 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."

У 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 , som vi pratade mer om i .
Kubernetes resursrapport (kube-resursrapport)
"Samla in pod- och Kubernetes-klusterresursbegÀranden, jÀmför dem med resursförbrukning och generera statisk HTML."

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 , som vi granskar .
Oktant
"En utbyggbar webbplattform för utvecklare utformad för att ge större förstÄelse för komplexiteten i Kubernetes-kluster."

, 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 .
Vi presenterar Kubernetes Web View
"kubectl för webben".

Efter att ha analyserat de tillgÀngliga grÀnssnittsalternativen för Kubernetes bestÀmde jag mig för att skapa ett nytt: . 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 );
- kostnadsanalys (se ).
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.

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.
- LÄter dig byta till relaterade instrumentpaneler och andra verktyg.

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 eller titta pÄ .
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 !
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 .)
PS frÄn översÀttaren
LÀs Àven pÄ vÄr blogg:
- «";
- «";
- «";
- «".
KĂ€lla: will.com
