
Voor een volledige interactie met het systeem is kennis van de command-line utilities belangrijk: in het geval van Kubernetes is dat kubectl. Aan de andere kant kunnen goed ontworpen, doordachte grafische interfaces een groot deel van de gewone taken uitvoeren en extra mogelijkheden bieden bij het gebruik van systemen.groter publiek.In het afgelopen jaar publiceerden we een vertaling
van een kleine review over web UI . De auteur van dat artikel en de utility zelf - Henning Jacobs van Zalando - positioneerde de nieuwigheid als 'kubectl voor het web'. Hij wilde een tool creëren met handige mogelijkheden voor interactie in een technische ondersteuningsomgeving (bijvoorbeeld snel een probleem tonen met een weblink) en voor het reageren op incidenten, het zoeken naar problemen in meerdere clusters tegelijkertijd. Zijn creatie ontwikkelt zich momenteel (vooral door de auteur zelf). Bij het beheer van meerdere Kubernetes-clusters van verschillende omvang zijn ook wij geïnteresseerd in de mogelijkheid om klanten een visuele werktool te bieden. Bij het kiezen van de juiste interface waren de volgende mogelijkheden voor ons essentieel:
ondersteuning voor role-based access control (RBAC);
- visualisatie van de status van namespaces en standaard Kubernetes-primitives (Deployment, StatefulSet, Service, Cronjob, Job, Ingress, ConfigMap, Secret, PVC);
- toegang tot de command line binnen een pod;
- het bekijken van logs van pods;
- het bekijken van de status van pods (
- describe status
het verwijderen van pods.); - Andere functies, zoals het bekijken van verbruikte middelen (in termen van pods/controllers/namespaces), het creëren/bewerken van K8s-primitives, zijn binnen ons werkproces niet relevant.
We beginnen onze review met het klassieke Kubernetes Dashboard, dat bij ons als standaard is aangenomen. Aangezien de wereld niet stil staat (wat betekent dat er steeds nieuwe GUI's voor Kubernetes komen), zullen we ook de huidige alternatieven bespreken en alles samenvatten in een vergelijkende tabel aan het einde van het artikel.
: In de review zullen we niet herhalen wat al besproken is in
NB, maar - voor de volledigheid - zijn relevante opties uit die review (K8Dash, Octant, Kubernetes Web View) opgenomen in de eindtabel. 1. Kubernetes Dashboard
Documentatiepagina
- ;
- Licentie: Apache 2.0;
- Licentie: Apache 2.0;
- In het kort: "Een universele webinterface voor Kubernetes-clusters. Hiermee kunnen gebruikers applicaties in het cluster beheren en problemen oplossen, evenals het cluster zelf beheren."

Dit is een multifunctioneel dashboard, die door de auteurs van Kubernetes in de officiële documentatie wordt behandeld (hoewel het) uit de doos). Het is ontworpen voor dagelijkse operationele behoeften en om applicaties in het cluster te debuggen. Wij gebruiken het als een volwaardig, lichtgewicht visueel hulpmiddel, dat ontwikkelaars de noodzakelijke en voldoende toegang tot het cluster biedt. De mogelijkheden dekken al hun behoeften die ontstaan tijdens het gebruik van het cluster (in we hebben enkele functies van het dashboard gedemonstreerd). Zoals makkelijk te raden is, betekent dit dat het voldoet aan al onze eerder genoemde eisen.
Enkele van de belangrijkste mogelijkheden van Kubernetes Dashboard zijn:
- Navigatie: weergave van de belangrijkste K8s-objecten per namespace.
- Met beheerdersrechten toont het paneel nodes, namespaces en Persistent Volumes. Voor de nodes is er statistiek over geheugengebruik, CPU, resourceallocatie, metrics, status, evenementen, enz.
- Weergave van applicaties die in de namespace zijn uitgerold, op type (Deployment, StatefulSet, enz.), hun onderlinge relaties (ReplicaSet, Horizontal Pod Autoscaler), algemene en gepersonaliseerde statistieken en informatie.
- Weergave van services en Ingressen, evenals hun verbindingen met pods en endpoints.
- Weergave van bestandsobjecten en opslag: Persistent Volume en Persistent Volume Claim.
- Weergave en bewerking van ConfigMap en Secret.
- Weergave van logs.
- Toegang tot de commandoregel in containers.
Een significante tekortkoming (hoewel niet voor ons) is dat er geen ondersteuning is voor multi-clusterwerking. Het project wordt actief ontwikkeld door de gemeenschap en ondersteunt nieuwe functies met de uitgave van nieuwe versies en specificaties van de Kubernetes API: de laatste versie van het paneel is van 22 mei 2020 - getest op compatibiliteit met Kubernetes 1.18.
2. Lens
- ;
- ;
- (~4800 sterren op GitHub);
- Licentie: MIT;
- In het kort: "Kubernetes IDE."

Het project wordt gepositioneerd als een volledig geïntegreerde ontwikkelomgeving (IDE) voor Kubernetes. Het is geoptimaliseerd voor gebruik met meerdere clusters en een groot aantal actieve pods (gemeet op 25.000 pods).
Belangrijkste kenmerken/functies van Lens:
- Een autonome applicatie die geen installatie binnen het cluster vereist (nauwelijks, voor het verkrijgen van alle metrics is Prometheus nodig, maar hiervoor kan een bestaande installatie worden gebruikt). De 'hoofd' installatie gebeurt op een persoonlijke computer onder Linux, macOS of Windows.
- Multiclusterbeheer (ondersteunt honderden clusters).
- Visualisatie van de status van het cluster in realtime.
- Grafieken van hulpbronnengebruik en trends met geschiedenis gebaseerd op de ingebouwde Prometheus.
- Toegang tot de commandoregel van containers en op de nodes van het cluster.
- Volledige ondersteuning voor Kubernetes RBAC.
De huidige release is — vanaf 16 juni 2020. De oorspronkelijke versie is ontwikkeld door het bedrijf Kontena, en vandaag de dag is alle intellectuele eigendom overgedragen aan een speciale organisatie. , genaamd 'de vereniging van cloud native-geeks en technologen', die verantwoordelijk zijn voor 'de instandhouding en toegankelijkheid van Open Source-software en producten van Kontena'.
Lens is het op één na populairste project op GitHub in de GUI-categorie voor Kubernetes, dat alleen zijn eigen Kubernetes Dashboard voor zich moet dulden. Alle andere Open Source-oplossingen die geen CLI* zijn, zijn veel minder populair.
* Zie over K9s in de bonussectie van de beoordeling.
3. Kubernetic
- ;
- ;
- (200+ sterren op GitHub);
- Licentie: propriëtair;
- In het kort: 'Clusterbeheer, eenvoudig gemaakt'.

Dit is een propriëtaire applicatie die op een persoonlijke computer wordt geïnstalleerd (ondersteunt Linux, macOS, Windows). De auteurs beloven een volledige vervanging van de commandoregeltool, en daarmee ook het verdwijnen van de noodzaak om commando's te onthouden en zelfs een tienvoudige versnelling van de werking.
Een van de interessante kenmerken van de tool is de ingebouwde ondersteuning voor Helm-charts, terwijl een van de nadelen het ontbreken van prestatiemetingen van applicaties is.
Hoofdkenmerken van Kubernetic:
- Handige weergave van de status van het cluster. Eén scherm voor het bekijken van alle gerelateerde clusterobjecten en hun afhankelijkheden; rode/groene status van gereedheid voor alle objecten; weergavemodus van de clusterstatus met realtime statusupdates.
- Snelle actieknoppen voor het verwijderen en schalen van applicaties.
- Ondersteuning voor multiclusterwerking.
- Eenvoudig werken met namespaces.
- Ondersteuning voor Helm-diagrammen en Helm-repositories (inclusief privé). Installatie en beheer van diagrammen via de webinterface.
De actuele kosten van het product zijn een eenmalige betaling van 30 euro voor gebruik door één persoon voor een onbeperkt aantal namespaces en clusters.
4. Kubevious
- ;
- ;
- (~500 sterren op GitHub);
- Licentie: Apache 2.0
- Kort samengevat: "Kubevious maakt het veilig en eenvoudig om Kubernetes-clusters, applicatieconfiguraties en hun status te bekijken."

Het idee van het project is om een tool te creëren die bedoeld is voor het analyseren en debuggen van applicatieconfiguraties die in een cluster zijn uitgerold. De ontwikkelaars hebben zich in eerste instantie gericht op het implementeren van deze functies, terwijl meer algemene zaken later worden behandeld.
Hoofdfuncties en kenmerken van Kubevious:
- Visualisatie van het cluster op een applicatiegerichte manier: onderling verbonden objecten in de interface worden gegroepeerd en in een hiërarchie geplaatst.
- Duidelijke weergave van afhankelijkheden in configuraties en de cascade-effecten van wijzigingen.
- Weergave van configuratiefouten in het cluster: onjuiste labeltoepassingen, gemiste poorten, enz. (Trouwens, als je geïnteresseerd bent in deze functie, let dan op , waar we .)
- Naast het vorige punt — er is ook een mogelijkheid om potentieel gevaarlijke containers te detecteren, namelijk containers met te veel privileges (attributen
hostPID,hostNetwork,hostIPC, montage vandocker.sockenzovoorts). - Geavanceerd zoek systeem binnen het cluster (niet alleen op basis van objectnamen, maar ook op basis van hun eigenschappen).
- Tools voor capaciteitsplanning en optimalisatie van middelen.
- Ingebouwde "tijdmachine" (mogelijkheid om eerdere wijzigingen in de configuratie van objecten te zien).
- Beheer van RBAC met behulp van een samenvattende interactieve tabel van Roles, RoleBindings, ServiceAccounts.
- Werkt alleen met één cluster.
Het project heeft een zeer korte geschiedenis (de eerste release vond plaats op 11 februari 2020) en het lijkt alsof er een periode van stabilisatie of vertraging in de ontwikkeling is begonnen. Terwijl eerdere versies vaak werden uitgebracht, is de laatste release ( van 15 april 2020) achtergebleven bij het oorspronkelijke ontwikkeltempo. Dit heeft waarschijnlijk te maken met het kleine aantal bijdragers: in de geschiedenis van de repository zijn er slechts 4, en het hele feitelijke werk wordt door één persoon uitgevoerd.
5. Kubewise
- ;
- Licentie: propriëtair (wordt open source);
- Kort samengevat: "Een eenvoudige multiplatformclient voor Kubernetes".

Een nieuw product van VMware, oorspronkelijk ontwikkeld tijdens een interne hackathon (in juni 2019). Het kan op een persoonlijke computer worden geïnstalleerd en werkt op basis van (ondersteunt Linux, macOS en Windows) en vereist kubectl versie v1.14.0 of hoger.
Belangrijkste functies van Kubewise:
- Interactie in de interface met de meest gebruikte Kubernetes-entiteiten: knooppunten, namespaces enz.
- Ondersteuning voor meerdere kubeconfig-bestanden voor verschillende clusters.
- Terminal met de mogelijkheid om de omgevingsvariabele
KUBECONFIG. - te stellen, en het genereren van aangepaste kubeconfig-bestanden voor een opgegeven namespace.
- Geavanceerde beveiligingsmogelijkheden (RBAC, wachtwoorden, service-accounts).
Momenteel heeft het project slechts één release — versie van 26 november 2019. De auteurs hadden gepland het direct als Open Source uit te brengen, maar konden dit door interne problemen (niet gerelateerd aan technische kwesties) niet doen. Op dit moment, in mei 2020, werken de auteurs aan de volgende release en moeten tegelijkertijd het proces van het openstellen van de code initiëren.
6. OpenShift Console
- ;
- (~150 sterren op GitHub);
- Licentie: Apache 2.0;
- Kort samengevat: 'UI voor OpenShift-clusters'.

Hoewel deze webinterface deel uitmaakt van de OpenShift-distributie (daar wordt het geïnstalleerd met behulp van een ), hebben de auteurs de mogelijkheid om het te installeren/gebruiken in gewone (vanilla) Kubernetes-installaties.
OpenShift Console is al geruime tijd in ontwikkeling, waardoor het veel functies heeft verzameld. We noemen de belangrijkste:
- Gedeeld benadering van de interface — twee 'perspectieven' die beschikbaar zijn in de Console: voor beheerders en voor ontwikkelaars. De modus Developer perspective groepeert objecten op een meer begrijpelijke manier voor ontwikkelaars (op basis van applicaties) en richt de interface op het oplossen van typische taken zoals het implementeren van applicaties, het volgen van de status van builds/implementaties en zelfs het bewerken van code via Eclipse Che.
- Beheer van workloads, netwerken, opslag en toegangsrechten.
- Logische scheiding voor workloads in projecten en applicaties. In een van de laatste releases — v4.3 — is er een speciale Project dashboard, die gebruikelijke gegevens (aantal en statussen van deployments, pods enz.; resourceverbruik en andere statistieken) weergeeft in het kader van projecten.
- Realtime weergave van de status van de cluster en de wijzigingen (events) die daarin hebben plaatsgevonden; logboeken bekijken.
- Bekijken van monitoringgegevens, gebaseerd op Prometheus, Alertmanager en Grafana.
- Beheer van de operators, gepresenteerd in .
- Beheer van builds die worden uitgevoerd via Docker (uit de aangegeven repository met Dockerfile), of willekeurige externe hulpprogramma's.
NB: We hebben ervoor gekozen om andere Kubernetes-distributies (bijvoorbeeld het veel minder bekende ): hoewel de grafische interface daarin zeer geavanceerd kan zijn, is het meestal een onderdeel van een geïntegreerde stack van een groot systeem. Als u echter denkt dat er oplossingen ontbreken die volledig functioneren in een vanilla-installatie van K8s, laat het ons weten in de opmerkingen.
Bonus
1. Portainer op Kubernetes in bètaversie
- ;
- (~100 sterren op GitHub);
- Licentie: Zlib(?) (dat is wat het moederproject heeft).
Project van het Portainer-team, dat de gelijknamige populaire interface voor het werken met Docker heeft ontwikkeld. Aangezien het project zich in een vroeg stadium van ontwikkeling bevindt (de eerste en enige bètaversie op 16 april 2020), hebben we de functionaliteiten niet beoordeeld. Het zou echter velen kunnen interesseren: als dat voor jou geldt, hou het dan in de gaten.
2. IcePanel
- ;
- Licentie: propriëtair;
- Kort samengevat: "Visuele editor voor Kubernetes".

Deze jonge desktop-app is bedoeld om Kubernetes-resources in realtime te visualiseren en te beheren met een eenvoudige interface in de geest van drag & drop. De momenteel ondersteunde objecten zijn Pod, Service, Deployment, StatefulSet, PersistentVolume, PersistentVolumeClaim, ConfigMap en Secret. Binnenkort wordt ondersteuning voor Helm beloofd. De belangrijkste nadelen zijn de geslotenheid van de code (de opening wordt verwacht "in een of andere vorm") 3. k9s
(~7700 sterren op GitHub);
- ;
- ;
- Kort samengevat: "Console-interface voor Kubernetes, waarmee je stijlvol de cluster kunt beheren."
- Licentie: Apache 2.0;
- In het kort: «Een console-interface voor Kubernetes, waarmee clusters op een stijlvolle manier kunnen worden beheerd».

De tool kwam alleen in het bonusgedeelte van de review voor omdat het een console-GUI biedt. De auteurs hebben echter letterlijk het beste uit de terminal gehaald, met niet alleen een gebruiksvriendelijke interface, maar ook 6 vooraf gedefinieerde thema's, een uitgebreid systeem van sneltoetsen en aliassen voor commando's. Hun grondige aanpak beperkte zich niet tot de uitstraling: de mogelijkheden van k9s zijn indrukwekkend: resourcebeheer, het tonen van de status van de cluster, het weergeven van resources in een hiërarchische structuur met afhankelijkheden, logweergave, ondersteuning voor RBAC, mogelijkheden voor uitbreiding via plugins... Dit spreekt de brede K8s-gemeenschap aan: het aantal GitHub-sterren van het project komt praktisch overeen met dat van het officiële Kubernetes Dashboard!
4. Applicatiebeheerpaneel
En ter afsluiting van de review — een aparte mini-categorie. Hierin bevinden zich twee webinterfaces die niet zijn ontworpen voor het uitgebreide beheer van Kubernetes-clusters, maar voor het beheer van wat daarin draait.
Zoals bekend is één van de meest volwassen en populaire middelen voor het implementeren van complexe applicaties in Kubernetes Helm. Gedurende zijn bestaan zijn er tal van pakketten (Helm charts) verzameld voor een eenvoudig uitrolproces . Daarom is het ook logisch dat er bijbehorende visuele middelen zijn ontstaan die het beheer van de levenscyclus van charts mogelijk maken.
4.1. Monocular
- (1300+ GitHub-sterren);
- Licentie: Apache 2.0;
- In het kort: "Webapplicatie voor het zoeken en ontdekken van Helm-charts in verschillende repositories. Dit dient als basis voor het Helm hub-project."

Deze ontwikkeling van de auteurs van Helm wordt geïnstalleerd op Kubernetes en functioneert binnen een enkele cluster, waar het de gestelde taak uitvoert. Tegenwoordig wordt het project echter vrijwel niet verder ontwikkeld. De belangrijkste functie is het ondersteunen van het bestaan van Helm Hub. Voor andere behoeften raden de auteurs Kubeapps (zie verderop) of Red Hat Automation Broker aan (onderdeel van OpenShift, maar is ook al niet meer in ontwikkeling).
4.2. Kubeapps
- ;
- ;
- (~2100 GitHub-sterren);
- Licentie: Apache 2.0
- In het kort: "Uw applicatiepaneel voor Kubernetes."

Een product van Bitnami, dat ook wordt geïnstalleerd in de Kubernetes-cluster, maar verschilt van Monocular door de oorspronkelijke focus op het werken met private repositories.
Belangrijkste functies en kenmerken van Kubeapps:
- Bekijk en installeer Helm charts uit repositories.
- Controleer, update en verwijder Helm-gebaseerde applicaties die in de cluster zijn geïnstalleerd.
- Ondersteuning voor het werken met aangepaste en privé chart-repositories (ondersteunt ChartMuseum en JFrog Artifactory).
- Bekijk en werk met externe services - vanuit de Service Catalog en Service Brokers.
- Publicatie van geïnstalleerde applicaties met behulp van de Service Catalog Bindings-mechanisme.
- Ondersteuning voor authenticatie en privilege-scheiding met behulp van RBAC.
Eindtabel
Hieronder vindt u een samenvattende tabel waarin we geprobeerd hebben de belangrijkste mogelijkheden van de bestaande visuele interfaces samen te vatten en te aggregeren om vergelijking te vergemakkelijken:
(De online versie van de tabel .)
Conclusie
Grafische interfaces voor Kubernetes zijn een vrij specifieke en jonge niche. Echter, ze ontwikkelen zich zeer actief: je kunt al zowel vrij volwassen oplossingen als heel nieuwe vinden die nog ruimte hebben om te groeien. Ze richten zich op verschillende toepassingsscenario's en bieden functionaliteiten en een uiterlijk dat voor bijna ieders smaak geschikt is. We hopen dat deze review helpt bij het kiezen van een hulpmiddel dat het beste aan de huidige behoeften voldoet.
P.S.
Dank aan voor de gegevens over de OpenShift Console voor de vergelijkingstabel!
Lees ook op onze blog:
- «»;
- «»;
- «»;
- «».
Bron: habr.com
