Panoramica delle interfacce grafiche per Kubernetes

Panoramica delle interfacce grafiche per Kubernetes

Per un utilizzo completo del sistema è importante conoscere le utility della riga di comando: nel caso di Kubernetes, si tratta di kubectl. D'altra parte, interfacce grafiche ben progettate possono soddisfare gran parte delle attività comuni e aprire ulteriori opportunità per l'operatività dei sistemi.unL'anno scorso abbiamo pubblicato la traduzione di una breve panoramica dell'interfaccia web

per Kubernetes, in occasione dell'annuncio dell'interfaccia web Kubernetes Web View. L'autore di quell'articolo e della stessa utility è Henning Jacobs della Zalando, che ha posizionato novità come "kubectl per il web". Voleva creare uno strumento con possibilità comode per l'interazione in formato di assistenza tecnica (ad esempio, mostrare rapidamente un problema tramite un link) e per la reazione a incidenti, ricercando problemi in molti cluster contemporaneamente. La sua creazione è in continua evoluzione anche al giorno d'oggi (principalmente grazie allo stesso autore). Servendo molteplici cluster Kubernetes di diverse dimensioni, siamo anche interessati alla possibilità di fornire ai clienti uno strumento per la visualizzazione. Nel scegliere l'interfaccia adeguata, per noi erano cruciali le seguenti caratteristiche:supporto per la gestione dei diritti degli utenti (RBAC);

visualizzazione dello stato degli spazi dei nomi e dei primitivi standard di Kubernetes (Deployment, StatefulSet, Service, Cronjob, Job, Ingress, ConfigMap, Secret, PVC);

  • accesso alla riga di comando all'interno di un pod;
  • visualizzazione dei log dei pod;
  • visualizzazione dello stato dei pod (
  • describe status,
  • eliminazione dei pod.Altre funzionalità, come la visualizzazione delle risorse consumate (suddivise per pod/controller/spazi dei nomi), la creazione/modifica dei primitivi K8s, non sono rilevanti nel nostro flusso di lavoro.);
  • Inizieremo la panoramica con il classico Kubernetes Dashboard, considerato da noi come uno standard. Poiché il mondo è in continuo cambiamento (e quindi nuovi GUI per Kubernetes stanno emergendo), parleremo anche delle sue alternative attuali, riassumendo tutto in una tabella comparativa alla fine dell'articolo.

Nella panoramica non ripeteremo le soluzioni già trattate in

, tuttavia – per completezza – le opzioni rilevanti da essa (K8Dash, Octant, Kubernetes Web View) sono incluse nella tabella finale.

NB1. Kubernetes Dashboard un articolo precedentePagina di documentazione

(8000+ stelle su GitHub);

  • Licenza: Apache 2.0;;
  • Repository (8000+ stelle su GitHub);
  • Licenza: Apache 2.0;
  • In breve: «Interfaccia web universale per i cluster Kubernetes. Consente agli utenti di gestire le applicazioni in esecuzione nel cluster e di risolverne i problemi, oltre a gestire il cluster stesso».

Panoramica delle interfacce grafiche per Kubernetes

Questo è un pannello generico, considerato dagli autori di Kubernetes nella documentazione ufficiale (anche se non è predisposto di default). È progettato per le esigenze quotidiane di gestione e debugging delle applicazioni nel cluster. Noi lo utilizziamo come un completo strumento visivo leggero, che consente di fornire agli sviluppatori l'accesso necessario e sufficiente al cluster. Le sue funzionalità coprono tutte le loro esigenze, che sorgono durante l'utilizzo del cluster (in questo articolo abbiamo dimostrato alcune caratteristiche del pannello). Come è facile intuire, ciò significa che soddisfa tutti i nostri requisiti sopra elencati.

Tra le principali funzionalità di Kubernetes Dashboard:

  • Navigazione: visualizzazione degli oggetti principali di K8s in base agli spazi dei nomi.
  • Con i diritti di amministratore, il pannello mostra nodi, spazi dei nomi e Volumi Persistenti. Sono disponibili statistiche sui nodi riguardo all'uso della memoria, della CPU, risorse allocate, metriche, stato, eventi, ecc.
  • Visualizzazione delle applicazioni distribuite nello spazio dei nomi, per tipo (Deployment, StatefulSet, ecc.), relazioni tra di esse (ReplicaSet, Horizontal Pod Autoscaler), statitistiche generali e personalizzate e informazioni.
  • Visualizzazione dei servizi e degli Ingress, così come le loro relazioni con i pod e gli endpoint.
  • Visualizzazione degli oggetti file e delle memorie: Volume Persistente e Richiesta di Volume Persistente.
  • Visualizzazione e modifica di ConfigMap e Secret.
  • Visualizzazione dei log.
  • Accesso alla riga di comando all'interno dei contenitori.

Un difetto significativo (anche se non per noi)— non supporta il funzionamento multi-cluster. Il progetto è attivamente sviluppato dalla comunità e supporta le funzioni attuali con il rilascio di nuove versioni e specifiche dell'API di Kubernetes: l'ultima versione del pannello è v2.0.1 del 22 maggio 2020 — testata per compatibilità con Kubernetes 1.18.

2. Lens

Panoramica delle interfacce grafiche per Kubernetes

Il progetto è posizionato come un ambiente di sviluppo integrato (IDE) completo per Kubernetes. Inoltre, è ottimizzato per lavorare con più cluster e un grande numero di pod in esecuzione in essi (testato su 25.000 pod).

Principali caratteristiche/possibilità di Lens:

  • Applicazione autonoma, che non richiede l'installazione di nulla all'interno del cluster (in effetti, per ottenere tutte le metriche sarà necessario Prometheus, ma si può utilizzare anche un'installazione già esistente). La "versione principale" viene installata su un computer personale con sistema operativo Linux, macOS o Windows.
  • Gestione multi-cluster (supporta centinaia di cluster).
  • Visualizzazione dello stato del cluster in tempo reale.
  • Grafici sull'utilizzo delle risorse e tendenze storiche basate su Prometheus incorporato.
  • Accesso alla riga di comando dei contenitori e ai nodi del cluster.
  • Supporto completo per Kubernetes RBAC.

Versione attuale — 3.5.0 dal 16 giugno 2020. La versione originale è stata creata in Kontena, e oggi tutta la proprietà intellettuale è stata trasferita a un'organizzazione speciale Lakend Labs, chiamata "unione di appassionati cloud native e tecnologi", responsabile per "il mantenimento e l'accessibilità del software open source e dei prodotti Kontena".

Lens è il secondo progetto più popolare su GitHub nella categoria GUI per Kubernetes, superato solo dal Dashboard di Kubernetes. Tutte le altre soluzioni open source al di fuori della categoria CLI* sono significativamente meno popolari.

* Vedi K9s nella parte bonus della recensione.

3. Kubernetic

Panoramica delle interfacce grafiche per Kubernetes

Si tratta di un'applicazione proprietaria che si installa su un computer personale (supporta Linux, macOS, Windows). I suoi autori promettono una sostituzione completa dell'utilità a riga di comando, insieme all'assenza della necessità di memorizzare comandi e persino un aumento della velocità di lavoro di dieci volte.

Una delle caratteristiche interessanti dello strumento è il supporto integrato per i chart Helm, mentre uno dei difetti è l'assenza di metriche sulle prestazioni delle applicazioni.

Le principali funzionalità di Kubernetic:

  • Visualizzazione comoda dello stato del cluster. Un'unica schermata per visualizzare tutti gli oggetti correlati al cluster e le loro dipendenze; stato di prontezza rosso/verdi per tutti gli oggetti; modalità di visualizzazione dello stato del cluster con aggiornamento dello stato in tempo reale.
  • Pulsanti di azione rapida per eliminare e scalare l'applicazione.
  • Supporto per il funzionamento multi-cluster.
  • Facile gestione degli spazi dei nomi.
  • Supporto per Helm chart e repository Helm (inclusi quelli privati). Installazione e gestione dei chart tramite interfaccia web.

Il costo attuale del prodotto è un pagamento una tantum di 30 euro per il suo utilizzo da parte di una persona per qualsiasi numero di namespace e cluster.

4. Kubevious

  • Sito;
  • Presentazione;
  • Repository (~500 stelle su GitHub);
  • Licenza: Apache 2.0
  • In breve: «Kubevious rende i cluster Kubernetes, la configurazione delle applicazioni e la visualizzazione del loro stato sicuri e facili da comprendere».

Panoramica delle interfacce grafiche per Kubernetes

L'idea del progetto è quella di creare uno strumento destinato all'analisi e al debug delle configurazioni delle applicazioni distribuite in un cluster. Gli autori si sono concentrati prima di tutto sull'implementazione di queste funzionalità, rimandando a dopo questioni più generali.

Caratteristiche e funzionalità principali di Kubevious:

  • Visualizzazione del cluster in modo orientato alle applicazioni: oggetti correlati nell'interfaccia sono raggruppati in una gerarchia.
  • Rappresentazione chiara delle dipendenze nelle configurazioni e delle conseguenze a cascata delle loro modifiche.
  • Visualizzazione degli errori di configurazione del cluster: uso errato delle etichette, porte mancanti, ecc. (A proposito, se sei interessato a questa funzionalità, fai riferimento a Polaris, di cui abbiamo già parlato.)
  • In aggiunta al punto precedente — è disponibile il rilevamento di container potenzialmente pericolosi, cioè con privilegi eccessivi (attributi hostPID, hostNetwork, hostIPC, montaggio docker.sock e simili).
  • Avanzato sistema di ricerca all'interno del cluster (non solo per nomi di oggetti, ma anche per le loro proprietà).
  • Strumenti per la pianificazione delle risorse e l'ottimizzazione.
  • Sistema integrato di 'macchina del tempo' (possibilità di vedere le modifiche precedenti nelle configurazioni degli oggetti).
  • Gestione RBAC tramite una tabella interattiva riassuntiva di Roles, RoleBindings, ServiceAccounts.
  • Funziona solo con un cluster.

Il progetto ha una storia molto breve (il primo rilascio è avvenuto l'11 febbraio 2020) e sembra esserci un periodo di stabilizzazione o rallentamento nello sviluppo. Mentre le versioni precedenti venivano rilasciate frequentemente, l'ultimo rilascio (v0.5 del 15 aprile 2020) è arrivato in ritardo rispetto al ritmo iniziale di sviluppo. Probabilmente ciò è dovuto al numero limitato di collaboratori: nella storia del repository ci sono solo 4, e tutto il lavoro effettivo viene svolto da una sola persona.

5. Kubewise

  • Pagina del progetto;
  • Licenza: proprietaria (diventerà Open Source);
  • In breve: «Cliente multi-piattaforma semplice per Kubernetes».

Panoramica delle interfacce grafiche per Kubernetes

Nuovo prodotto della VMware, originariamente creato nell'ambito di un hackathon interno (a giugno 2019). Si installa su un computer personale, funziona su base Electron (supporta Linux, macOS e Windows) e richiede kubectl non inferiore a v1.14.0.

Principali funzionalità di Kubewise:

  • Interazione nell'interfaccia con le entità Kubernetes più utilizzate: nodi, spazi dei nomi, ecc.
  • Supporto per più file kubeconfig per cluster diversi.
  • Terminale con possibilità di impostare variabili d'ambiente KUBECONFIG.
  • Generazione di file kubeconfig personalizzati per uno spazio dei nomi specifico.
  • Funzionalità avanzate di sicurezza (RBAC, password, account di servizio).

Finora il progetto ha solo una versione — la versione 1.1.0 del 26 novembre 2019. Gli autori avevano pianificato di rilasciarlo immediatamente come Open Source, ma a causa di problemi interni (non legati a questioni tecniche) non sono riusciti a farlo. A maggio 2020, gli autori stanno lavorando alla prossima versione e contemporaneamente devono avviare il processo di apertura del codice.

6. OpenShift Console

Panoramica delle interfacce grafiche per Kubernetes

Nonostante questo interfaccia web faccia parte del pacchetto OpenShift (là viene installato tramite un operatore speciale), gli autori hanno previsto la possibilità di installarlo/utilizzarlo anche in installazioni standard (vanilla) di Kubernetes.

OpenShift Console è in sviluppo da molto tempo, quindi ha incorporato molte funzionalità. Citando le principali:

  • Approccio condiviso all'interfaccia — due «prospettive» disponibili nelle funzionalità della Console: per amministratori e per sviluppatori. La modalità Developer perspective raggruppa gli oggetti in una forma più comprensibile per gli sviluppatori (per applicazioni) e orienta l'interfaccia alla risoluzione di compiti standard come il deployment delle applicazioni, il monitoraggio dello stato di build/deploy e persino la modifica del codice tramite Eclipse Che.
  • Gestione dei carichi di lavoro, della rete, dello storage, dei diritti di accesso.
  • Separazione logica dei carichi di lavoro in progetti e applicazioni. In una delle ultime versioni — v4.3 — è apparso è stato introdotto un Project dashboard, visualizzando dati familiari (numero e stato dei deployment, pod, ecc.; consumo di risorse e altre metriche) in relazione ai progetti.
  • Visualizzazione dello stato del cluster in tempo reale, delle modifiche avvenute (eventi); visualizzazione dei log.
  • Visualizzazione dei dati di monitoraggio basati su Prometheus, Alertmanager e Grafana.
  • Gestione degli operatori presentati in OperatorHub.
  • Gestione delle build eseguite tramite Docker (dal repository specificato con Dockerfile), S2I o strumenti esterni arbitrari.

NB: Non abbiamo incluso nella comparazione altri distribuzioni Kubernetes (per esempio, molto meno noto Kubesphere): nonostante l'interfaccia grafica possa essere molto avanzata, di solito viene fornita come parte di un stack integrato di un grande sistema. Tuttavia, se pensate che manchino alcune soluzioni che funzionino correttamente anche nelle installazioni vanilla di K8s, fatecelo sapere nei commenti.

Bonus

1. Portainer su Kubernetes in beta

  • Sito;
  • Repository (~100 stelle su GitHub);
  • Licenza: Zlib(?) (questa è quella del progetto principale).

Progetto del team di Portainer, che ha sviluppato l'interfaccia popolare con lo stesso nome per lavorare con Docker. Poiché il progetto si trova in una fase iniziale di sviluppo (prima e unica versione beta è uscito 16 aprile 2020), non abbiamo valutato le sue funzionalità. Tuttavia, potrebbe interessare molti: se è il vostro caso, seguite gli sviluppi.

2. IcePanel

  • Sito;
  • Licenza: proprietaria;
  • In breve: «Editor visivo per Kubernetes».

Panoramica delle interfacce grafiche per Kubernetes

Questa giovane applicazione desktop è progettata per visualizzare le risorse Kubernetes in tempo reale e gestirle tramite un'interfaccia semplice in stile drag & drop. Attualmente supporta oggetti come Pod, Service, Deployment, StatefulSet, PersistentVolume, PersistentVolumeClaim, ConfigMap e Secret. A breve promettono di aggiungere il supporto per Helm. I principali svantaggi sono la chiusura del codice (è previsto un apertura «in qualche modo») e la mancanza di supporto per Linux (attualmente sono disponibili solo versioni per Windows e macOS, anche se questo è probabilmente solo una questione di tempo).

3. k9s

  • Sito;
  • Dimostrazione;
  • Repository (~7700 stelle su GitHub);
  • Licenza: Apache 2.0;
  • In breve: «Interfaccia da console per Kubernetes che consente di gestire il cluster in modo elegante».

Panoramica delle interfacce grafiche per Kubernetes

L'utility è stata menzionata solo nella parte bonus della recensione perché offre un'interfaccia GUI da console. Tuttavia, gli autori hanno letteralmente spremuto il massimo dal terminale, offrendo non solo un'interfaccia comoda, ma anche 6 temi preimpostati, un sistema avanzato di combinazioni di tasti e alias per i comandi. Il loro approccio meticoloso non si è limitato all'aspetto visivo: le funzionalità di k9s sono piacevolmente impressionanti: gestione delle risorse, visualizzazione dello stato del cluster, output delle risorse in una rappresentazione gerarchica con dipendenze, visualizzazione dei log, supporto RBAC, estensione delle funzionalità tramite plugin… Tutto ciò ha trovato favore presso la vasta comunità K8s: il numero di stelle su GitHub del progetto è praticamente paragonabile a quello del Kubernetes Dashboard ufficiale!

4. Pannelli di controllo delle applicazioni

E in conclusione della recensione — una mini-categoria separata. In essa sono stati inclusi due interfacce web, destinate non alla gestione complessiva dei cluster Kubernetes, ma alla gestione di ciò che viene distribuito al loro interno.

Come è noto, uno degli strumenti più maturi e diffusi per il deployment di applicazioni complesse in Kubernetes è Helm. Nel periodo della sua esistenza si è accumulato un gran numero di pacchetti (Helm charts) per una semplice distribuzione di molte applicazioni popolari. Pertanto, appare del tutto logico anche l'emergere di strumenti visivi corrispondenti, che consentono di gestire il ciclo di vita dei chart.

4.1. Monocular

  • Repository (1300+ stelle su GitHub);
  • Licenza: Apache 2.0;
  • In breve: «Applicazione web per la ricerca e la scoperta di Helm charts in molti repository. Serve come base per il progetto Helm hub».

Panoramica delle interfacce grafiche per Kubernetes

Questo sviluppo da parte degli autori di Helm viene installato in Kubernetes e funziona all'interno di un singolo cluster, eseguendo il compito previsto. Tuttavia, attualmente il progetto è quasi fermo. La sua principale finalità è sostenere l'esistenza di Helm Hub. Per altre necessità, gli autori consigliano Kubeapps (vedi oltre) o Red Hat Automation Broker (parte di OpenShift, anch'essa non più in sviluppo).

4.2. Kubeapps

  • Sito;
  • Presentazione;
  • Repository (~2100 stelle su GitHub);
  • Licenza: Apache 2.0
  • In breve: «Il tuo pannello delle applicazioni per Kubernetes».

Panoramica delle interfacce grafiche per Kubernetes

Prodotto di Bitnami, che si installa anch'esso nel cluster Kubernetes, ma si differenzia da Monocular per il suo focus iniziale sul lavoro con repository privati.

Funzionalità chiave e caratteristiche di Kubeapps:

  • Visualizzazione e installazione di Helm chart da repository.
  • Verifica, aggiornamento e rimozione di applicazioni basate su Helm, installate nel cluster.
  • Supporto per il lavoro con repository chart personalizzati e privati (supporta ChartMuseum e JFrog Artifactory).
  • Visualizzazione e interazione con servizi esterni - dal Service Catalog e dai Service Brokers.
  • Pubblicazione delle applicazioni installate tramite il meccanismo dei Service Catalog Bindings.
  • Supporto per l'autenticazione e la separazione dei diritti tramite RBAC.

Tabella riassuntiva

Di seguito è riportata una tabella riepilogativa in cui abbiamo cercato di raccogliere e aggregare le principali funzionalità delle interfacce visive esistenti per facilitare il confronto:

Panoramica delle interfacce grafiche per Kubernetes
(La versione online della tabella è disponibile in Google Docs.)

Conclusione

Le interfacce grafiche per Kubernetes sono un settore piuttosto specifico e giovane. Tuttavia, si stanno sviluppando in modo molto attivo: è già possibile trovare soluzioni sia abbastanza mature che molto giovani, che hanno ancora margini di crescita. Sono orientate a diverse opzioni di utilizzo, offrendo funzionalità e aspetto praticamente per tutti i gusti. Speriamo che questa panoramica aiuti a scegliere lo strumento che meglio soddisfa le attuali esigenze.

P.S.

Grazie kvaps per i dati sulla OpenShift Console per la tabella comparativa!

Leggi anche nel nostro blog:

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster