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.

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 â 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:
- kommunikation med kollegor inom supporten;
- 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 :

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

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

Detta Àr en ganska exakt beskrivning av 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.â

TyvÀrr, 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.â

Hos 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 , som vi har berÀttat mer om i .
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.â

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 vara anvÀndbart, .
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.â

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

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

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.
- möjliggör att vÀxla till relevanta övervakningspaneler och andra verktyg.

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 eller kollar pÄ .
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 !
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 .)
P.S. FrÄn översÀttaren
LÀs Àven i vÄr blogg:
- «»;
- «»;
- «»;
- «».
KĂ€lla: habr.com
