Översikt över grafiska användargränssnitt för Kubernetes

Översikt över grafiska användargränssnitt för Kubernetes

För ett fullfjädrat arbete med systemet är kunskap om kommandoradsverktyg viktig: i fallet med Kubernetes är detta kubectl. Å andra sidan kan väldesignade, genomtänkta grafiska gränssnitt presteraоde flesta av de vanliga uppgifterna och öppnar upp ytterligare möjligheter för drift av system.

Förra året publicerade vi en översättning liten översikt över webbgränssnittet för Kubernetes, tidsinställd att sammanfalla med tillkännagivandet av webbgränssnittet Kubernetes WebView. Författaren till den artikeln och själva verktyget, Henning Jacobs från Zalando, placerade just den nya produkten som "kubectl för webben". Han ville skapa ett verktyg med användarvänliga möjligheter för interaktion i ett tekniskt supportformat (till exempel snabbt visa problemet med en webblänk) och för att svara på incidenter, söka efter problem i många kluster samtidigt. Hans avkomma utvecklas för närvarande (främst genom ansträngningar från författaren själv).

Eftersom vi servar många Kubernetes-kluster av olika storlekar är vi också intresserade av att kunna tillhandahålla ett visuellt verktyg till våra kunder. När vi valde ett lämpligt gränssnitt var följande funktioner nyckeln för oss:

  • stöd för differentiering av användarrättigheter (RBAC);
  • visualisering av namnområdets tillstånd och standard Kubernetes primitiver (Deployment, StatefulSet, Service, Cronjob, Job, Ingress, ConfigMap, Secret, PVC);
  • få tillgång till kommandoraden inuti podden;
  • visa loggar av kapslar;
  • se status för poddar (describe status);
  • ta bort baljor.

Andra funktioner, som att visa förbrukade resurser (i sammanhanget av poddar/kontroller/namnområden), skapa/redigera K8s primitiver, är inte relevanta i vårt arbetsflöde.

Vi börjar recensionen med den klassiska Kubernetes Dashboard, som är vår standard. Eftersom världen inte står stilla (vilket innebär att Kubernetes har fler och fler nya GUI) kommer vi också att prata om dess nuvarande alternativ, och sammanfatta allt i en jämförande tabell i slutet av artikeln.

NB: I granskningen kommer vi inte att upprepa med de lösningar som redan har övervägts i senaste artikeln, men för fullständighetens skull ingår de relevanta alternativen från den (K8Dash, Octant, Kubernetes Web View) i sluttabellen.

1. Kubernetes Dashboard

  • Dokumentationssida;
  • förvaret (8000+ GitHub-stjärnor);
  • Licens: Apache 2.0;
  • Kort sagt: "Universellt webbgränssnitt för Kubernetes-kluster. Det tillåter användare att hantera och felsöka applikationer som körs i klustret, samt hantera själva klustret."

Översikt över grafiska användargränssnitt för Kubernetes

Detta är en panel för allmänna ändamål som täcks av Kubernetes-författarna i den officiella dokumentationen (men ej deployerbar standard). Den är designad för behoven av daglig drift och felsökning av applikationer i ett kluster. Hemma använder vi det som ett fullfjädrat lätt visuellt verktyg som gör att vi kan ge utvecklare den nödvändiga och tillräckliga tillgången till klustret. Dess kapacitet täcker alla deras behov som uppstår i processen att använda klustret (I den här artikeln vi visade några funktioner i panelen). Som du kanske gissar betyder detta att den uppfyller alla våra krav som anges ovan.

Bland huvudfunktionerna i Kubernetes Dashboard:

  • Navigation: visa huvudobjekten i K8s i sammanhanget med namnutrymmen.
  • Om du har administratörsrättigheter visar panelen noder, namnutrymmen och beständiga volymer. För noder finns statistik tillgänglig om användning av minne, processor, resursallokering, mätvärden, status, händelser, etc.
  • Visa applikationer som distribueras i ett namnområde efter deras typ (Deployment, StatefulSet, etc.), relationer mellan dem (ReplicaSet, Horizontal Pod Autoscaler), allmän och personlig statistik och information.
  • Visa tjänster och ingresser, såväl som deras relationer med pods och endpoints.
  • Visa filobjekt och lagringar: Persistent Volume och Persistent Volume Claim.
  • Visa och redigera ConfigMap och Secret.
  • Visa loggar.
  • Kommandoradsåtkomst i containrar.

En betydande nackdel (dock inte för oss) är att det inte finns något stöd för multiklusterarbete. Projektet utvecklas aktivt av communityn och upprätthåller relevanta funktioner med lanseringen av nya versioner och specifikationer av Kubernetes API: den senaste versionen av panelen är v2.0.1 22 maj 2020 - Testad för kompatibilitet med Kubernetes 1.18.

2. Lens

Översikt över grafiska användargränssnitt för Kubernetes

Projektet är positionerat som en komplett integrerad utvecklingsmiljö (IDE) för Kubernetes. Dessutom är den optimerad för att fungera med många kluster och ett stort antal pods som körs i dem (testade på 25 XNUMX pods).

Huvudfunktioner/funktioner hos Lens:

  • Fristående applikation som inte kräver installation av något inuti klustret (mer exakt kommer Prometheus att krävas för att få alla mätvärden, men en befintlig installation kan också användas för detta). Den "huvudsakliga" installationen görs på en persondator som kör Linux, macOS eller Windows.
  • Flerklusterhantering (hundratals kluster stöds).
  • Visualisering av klustrets tillstånd i realtid.
  • Resursanvändningsdiagram och trender med historik baserad på inbyggd Prometheus.
  • Åtkomst till kommandoraden för behållare och på klusternoder.
  • Fullständigt stöd för Kubernetes RBAC.

Nuvarande release - 3.5.0 daterad 16 juni 2020 Ursprungligen skapad av Kontena, idag har all immateriell egendom överförts till en särskild organisation Lakeland Labs, kallad "en förening av molninfödda nördar och teknologer", som är ansvarig för "bevarandet och tillgängligheten av Kontenas programvara och produkter med öppen källkod."

Lens är det näst mest populära projektet på GitHub från kategorin GUI för Kubernetes, och "förlorar" bara själva Kubernets Dashboard. Alla andra Open Source-lösningar som inte tillhör kategorin CLI* är betydligt sämre i popularitet.

* Se om K9s i bonusdelen av recensionen.

3. Kubernetic

Översikt över grafiska användargränssnitt för Kubernetes

Detta är en proprietär applikation som är installerad på en persondator (Linux, macOS, Windows stöds). Dess författare lovar en fullständig ersättning av kommandoradsverktyget, och med det - inget behov av att komma ihåg kommandon och till och med en tiofaldig ökning av hastigheten.

En av verktygets intressanta funktioner är det inbyggda stödet för Helm-diagram, och en av nackdelarna är bristen på applikationsprestandamått.

Huvudfunktioner i Kubernetic:

  • Bekväm visning av klusterstatus. En skärm för att visa alla relaterade klusterobjekt och deras beroenden; röd/grön beredskapsstatus för alla objekt; klusterstatusläge med statusuppdateringar i realtid.
  • Snabbåtgärdsknappar för att radera och skala applikationen.
  • Stöd för drift med flera kluster.
  • Enkelt arbete med namnrymder.
  • Stöd för Helm-diagram och Helm-förråd (inklusive privata). Installera och hantera diagram i webbgränssnittet.

Den nuvarande kostnaden för produkten är en engångsbetalning på 30 euro för dess användning av en person för valfritt antal namnutrymmen och kluster.

4. Kubevious

  • webbplats;
  • presentation;
  • förvaret (~500 GitHub-stjärnor);
  • Licens: Apache 2.0
  • Kort sagt: "Kubevious gör Kubernetes-kluster, applikationskonfiguration och statusvisning säkra och lätta att förstå."

Översikt över grafiska användargränssnitt för Kubernetes

Tanken med projektet är att skapa ett verktyg utformat för att analysera och felsöka applikationskonfigurationer som distribueras i ett kluster. Författarna fokuserade främst på implementeringen av dessa funktioner och lämnade mer allmänna saker till senare.

Nyckelfunktioner och funktioner hos Kubevious:

  • Klustervisualisering på ett applikationscentrerat sätt: relaterade objekt i gränssnittet grupperas i en hierarki.
  • Visuell visning av beroenden i konfigurationer och kaskadkonsekvenser av deras ändringar.
  • Visning av klusterkonfigurationsfel: missbruk av etiketter, missade portar, etc. (Förresten, om du är intresserad av den här funktionen, var uppmärksam på Polarisom vilka vi redan skrivit.)
  • Utöver föregående punkt finns detektion av potentiellt farliga behållare, d.v.s. har för många privilegier (attribut hostPID, hostNetwork, hostIPC, montera docker.sock etc).
  • Avancerat söksystem för klustret (inte bara genom namnen på objekt, utan också genom deras egenskaper).
  • Verktyg för kapacitetsplanering och resursoptimering.
  • Inbyggd "tidsmaskin" (möjligheten att se tidigare ändringar i konfigurationen av objekt).
  • RBAC-hantering med en pivotrelaterad tabell över roller, rollbindningar, servicekonton.
  • Fungerar med endast ett kluster.

Projektet har en mycket kort historia (den första releasen ägde rum den 11 februari 2020) och det verkar som om det har varit en period av antingen stabilisering eller avmattning i utvecklingen. Om tidigare versioner släpptes ofta, då den senaste utgåvan (v0.5 15 april 2020) har släpat efter den initiala utvecklingstakten. Detta beror förmodligen på det lilla antalet bidragsgivare: det finns bara 4 av dem i förvarets historia, och allt det faktiska arbetet utförs av en person.

5. Kubewise

  • Projektsida;
  • Licens: proprietär (kommer att bli öppen källkod);
  • Kort sagt: "En enkel multiplattformsklient för Kubernetes."

Översikt över grafiska användargränssnitt för Kubernetes

En ny produkt från VMware, ursprungligen skapad som en del av ett internt hackathon (i juni 2019). Installerad på en persondator, fungerar utifrån Elektron (Linux, macOS och Windows stöds) och kräver kubectl v1.14.0 eller senare.

Huvudfunktioner hos Kubewise:

  • Gränssnittsinteraktion med de mest använda Kubernetes-enheterna: noder, namnrymder, etc.
  • Stöd för flera kubeconfig-filer för olika kluster.
  • Terminal med möjlighet att ställa in en miljövariabel KUBECONFIG.
  • Generera anpassade kubeconfig-filer för det givna namnområdet.
  • Avancerade säkerhetsfunktioner (RBAC, lösenord, tjänstekonton).

Hittills har projektet bara en version - version 1.1.0 daterad 26 november 2019. Dessutom planerade författarna att omedelbart släppa den som öppen källkod, men på grund av interna problem (ej relaterade till tekniska problem) kunde de inte göra detta. Från och med maj 2020 arbetar författarna på nästa utgåva och bör initiera processen för att öppna koden samtidigt.

6. OpenShift-konsolen

Översikt över grafiska användargränssnitt för Kubernetes

Trots att detta webbgränssnitt är en del av OpenShift-distributionen (det installeras där med hjälp av speciell operatör), författare har tillhandahållit möjligheten att installera / använda den i normala (vanilj) Kubernetes-installationer.

OpenShift Console har varit under utveckling under lång tid, så den har inkorporerat många funktioner. Vi kommer att nämna de viktigaste:

  • Delat gränssnitt - två "perspektiv" på de möjligheter som finns tillgängliga i konsolen: för administratörer och för utvecklare. Läge utvecklarperspektiv grupperar objekt i en form som är mer förståelig för utvecklare (efter applikationer) och fokuserar gränssnittet på att lösa sådana typiska uppgifter som att distribuera applikationer, spåra bygg-/distribueringsstatus och till och med redigera kod genom Eclipse Che.
  • Hantering av arbetsbelastningar, nätverk, lagring, åtkomsträttigheter.
  • Logisk uppdelning av arbetsbelastningar i projekt och applikationer. I en av de senaste versionerna - v4.3 - dök särskild Projektets instrumentpanel, som visar vanliga data (antal och status för distributioner, pods, etc.; resursförbrukning och andra mätvärden) i en projektdel.
  • Uppdaterad i realtidsvisning av klustrets tillstånd, förändringar (händelser) som har inträffat i det; visning av loggar.
  • Visa övervakningsdata baserad på Prometheus, Alertmanager och Grafana.
  • Ledning av operatörer representerade i operatörsnav.
  • Hantera builds som körs genom Docker (från ett specificerat arkiv med en Dockerfile), S2I eller godtyckliga externa verktyg.

NB: Vi har inte lagt till andra i jämförelsen Kubernetes distributioner (till exempel den mycket mindre kända Kubesphere): trots att GUI kan vara mycket avancerat i dem, kommer det vanligtvis som en del av den integrerade stacken av ett stort system. Men om du tror att det inte finns tillräckligt med lösningar som fungerar fullt ut i vanilla K8s-installationen, låt oss veta i kommentarerna.

bonus

1. Portainer på Kubernetes i Beta

  • webbplats;
  • förvaret (~100 GitHub-stjärnor);
  • Licens: Zlib(?) (samma för föräldraprojektet).

Ett projekt från Portainer-teamet, som utvecklade det populära gränssnittet med samma namn för att arbeta med Docker. Eftersom projektet är i ett tidigt utvecklingsstadium (den första och enda betaversionen kom ut 16 april 2020) utvärderade vi inte dess funktioner. Det kan dock vara av intresse för många: om det här handlar om dig, följ utvecklingen.

2. IcePanel

  • webbplats;
  • Licens: proprietär;
  • Kort sagt: "Visuell Kubernetes Editor".

Översikt över grafiska användargränssnitt för Kubernetes

Den här unga skrivbordsapplikationen syftar till att visualisera och hantera Kubernetes-resurser i realtid med ett enkelt dra-och-släpp-gränssnitt. Objekt som för närvarande stöds är Pod, Service, Deployment, StatefulSet, PersistentVolume, PersistentVolumeClaim, ConfigMap och Secret. Snart lovar de att lägga till stöd för Helm. De största nackdelarna är kodens närhet (det förväntas öppnar "på något sätt") och bristen på Linux-stöd (hittills är endast versioner för Windows och macOS tillgängliga, även om detta också med största sannolikhet bara är en tidsfråga).

3.k9s

  • webbplats;
  • Demonstration;
  • förvaret (~7700 GitHub-stjärnor);
  • Licens: Apache 2.0;
  • Kort sagt: "Ett konsolgränssnitt för Kubernetes som låter dig hantera ditt kluster med stil."

Översikt över grafiska användargränssnitt för Kubernetes

Verktyget var bara i bonusdelen av recensionen av anledningen att det erbjuder ett konsol-GUI. Men författarna kramade bokstavligen det maximala ur terminalen, och erbjöd inte bara ett användarvänligt gränssnitt, utan också 6 fördefinierade teman och ett avancerat system med kortkommandon och kommandoalias. Deras grundliga tillvägagångssätt var inte begränsat till utseendet: k9s funktioner är behagligt imponerande: resurshantering, visning av klustrets tillstånd, visning av resurser i en hierarkisk representation med beroenden, visning av loggar, RBAC-stöd, utökade möjligheter genom plugins ... Allt detta tilltalade till den breda K8s-gemenskapen: antalet GitHub-stjärnor i projektet är nästan lika bra som den officiella Kubernetes Dashboard!

4. Applikationskontrollpaneler

Och i slutet av recensionen - en separat minikategori. Det inkluderade två webbgränssnitt som inte är utformade för den heltäckande hanteringen av Kubernetes-kluster, utan för att hantera vad som distribueras i dem.

Som ni vet är ett av de mest mogna och utbredda verktygen för att distribuera komplexa applikationer i Kubernetes Helm. Under dess existens har många paket (Helm-diagram) samlats för enkel distribution många populära applikationer. Därför är utseendet på lämpliga visuella verktyg som låter dig hantera diagrammets livscykel ganska logiskt.

4.1. Monokulär

  • förvaret (1300+ GitHub-stjärnor);
  • Licens: Apache 2.0;
  • Kort sagt: "En webbapplikation för att söka och upptäcka Helm-diagram över flera arkiv. Fungerar som grund för Helm hub-projektet."

Översikt över grafiska användargränssnitt för Kubernetes

Denna utveckling från författarna till Helm är installerad i Kubernetes och fungerar inom samma kluster och utför uppgiften. Men för närvarande utvecklas inte projektet särskilt mycket. Dess huvudsakliga syfte är att stödja existensen av Helm Hub. För andra behov rekommenderar författarna Kubeapps (se nedan) eller Red Hat Automation Broker (en del av OpenShift, men utvecklas inte heller längre).

4.2. Kubeapps

Översikt över grafiska användargränssnitt för Kubernetes

En produkt från Bitnami, som också är installerad i ett Kubernetes-kluster, men som skiljer sig från Monocular i sitt initiala fokus på att arbeta med privata repositories.

Nyckelfunktioner och funktioner i Kubeapps:

  • Visa och installera Helm-diagram från arkiv.
  • Kontrollera, uppdatera och ta bort Helm-baserade applikationer installerade i klustret.
  • Stöd för anpassade och privata kartlager (stöder ChartMuseum och JFrog Artifactory).
  • Se och arbeta med externa tjänster - från Servicekatalogen och Servicemäklare.
  • Publicera installerade applikationer med hjälp av mekanismen Service Catalog Bindings.
  • Stöd för autentisering och separation av rättigheter med RBAC.

Översiktstabell

Nedan finns en sammanfattningstabell där vi har försökt sammanfatta och aggregera huvuddragen i befintliga visuella gränssnitt för att underlätta jämförelse:

Översikt över grafiska användargränssnitt för Kubernetes
(Onlineversion av tabellen tillgänglig på Google Dokument.)

Slutsats

GUI för Kubernetes är en ganska specifik och ung nisch. Det utvecklas dock mycket aktivt: det är redan möjligt att hitta både ganska mogna lösningar och mycket unga, som fortfarande har utrymme att växa. De tillgodoser en mängd olika applikationer och erbjuder funktioner och utseende som passar nästan alla smaker. Vi hoppas att denna recension kommer att hjälpa dig att välja det verktyg som bäst passar dina nuvarande behov.

PS

Tack kvaps för data på OpenShift-konsolen för jämförelsetabellen!

Läs även på vår blogg:

Källa: will.com

Lägg en kommentar