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

Lägg en kommentar