Panoramica delle GUI per Kubernetes

Panoramica delle GUI per Kubernetes

Per un lavoro completo con il sistema, la conoscenza delle utilità della riga di comando è importante: nel caso di Kubernetes, questo è kubectl. D'altra parte, le interfacce grafiche ben progettate e ponderate possono funzionareоla maggior parte dei soliti compiti e aprono ulteriori opportunità per il funzionamento dei sistemi.

L'anno scorso abbiamo pubblicato una traduzione piccola panoramica dell'interfaccia utente web per Kubernetes, in concomitanza con l'annuncio dell'interfaccia web Visualizzazione Web Kubernetes. L'autore di quell'articolo e dell'utilità stessa, Henning Jacobs di Zalando, ha appena posizionato il nuovo prodotto come "kubectl per il web". Voleva creare uno strumento con funzionalità intuitive per l'interazione in un formato di supporto tecnico (ad esempio, mostrando rapidamente il problema con un collegamento Web) e per rispondere agli incidenti, cercando i problemi in molti cluster contemporaneamente. La sua progenie si sta sviluppando attualmente (principalmente grazie agli sforzi dell'autore stesso).

Poiché serviamo molti cluster Kubernetes di varie dimensioni, siamo anche interessati alla capacità di fornire uno strumento di lavoro visivo ai clienti. Nella scelta di un'interfaccia adatta, le seguenti caratteristiche sono state fondamentali per noi:

  • supporto per la differenziazione dei diritti degli utenti (RBAC);
  • visualizzazione dello stato del namespace e delle primitive Kubernetes standard (Deployment, StatefulSet, Service, Cronjob, Job, Ingress, ConfigMap, Secret, PVC);
  • ottenere l'accesso alla riga di comando all'interno del pod;
  • visualizzare i registri dei pod;
  • visualizzare lo stato dei pod (describe status);
  • rimozione dei baccelli.

Altre funzioni, come la visualizzazione delle risorse consumate (nel contesto di pod/controller/spazi dei nomi), la creazione/modifica delle primitive K8, non sono rilevanti all'interno del nostro flusso di lavoro.

Inizieremo la revisione con il classico Kubernetes Dashboard, che è il nostro standard. Visto che il mondo non si ferma (il che significa che Kubernetes ha sempre più GUI nuove), parleremo anche delle sue attuali alternative, riassumendo il tutto in una tabella comparativa a fine articolo.

NB: Nella recensione, non ripeteremo con quelle soluzioni che sono già state prese in considerazione ultimo articolo, tuttavia, per completezza, le relative opzioni (K8Dash, Octant, Kubernetes Web View) sono incluse nella tabella finale.

1. Dashboard di Kubernetes

  • Pagina della documentazione;
  • deposito (8000+ stelle GitHub);
  • Licenza: Apache 2.0;
  • In breve: “Interfaccia web universale per cluster Kubernetes. Consente agli utenti di gestire e risolvere i problemi delle applicazioni in esecuzione nel cluster, nonché di gestire il cluster stesso."

Panoramica delle GUI per Kubernetes

Questo è un pannello generico coperto dagli autori di Kubernetes nella documentazione ufficiale (Ma non distribuibile predefinito). È progettato per le esigenze del funzionamento quotidiano e del debug delle applicazioni in un cluster. A casa, lo usiamo come uno strumento visivo leggero a tutti gli effetti che ci consente di fornire agli sviluppatori l'accesso necessario e sufficiente al cluster. Le sue capacità coprono tutte le loro esigenze che sorgono nel processo di utilizzo del cluster (in questo articolo abbiamo dimostrato alcune caratteristiche del pannello). Come puoi immaginare, ciò significa che soddisfa tutti i nostri requisiti sopra elencati.

Tra le caratteristiche principali di Kubernetes Dashboard:

  • Navigazione: visualizza gli oggetti principali di K8 nel contesto dei namespace.
  • Se disponi dei diritti di amministratore, il pannello mostra nodi, spazi dei nomi e volumi permanenti. Per i nodi sono disponibili statistiche sull'uso di memoria, processore, allocazione delle risorse, metriche, stato, eventi, ecc.
  • Visualizza le applicazioni distribuite in uno spazio dei nomi in base al tipo (Deployment, StatefulSet, ecc.), alle relazioni tra di esse (ReplicaSet, Horizontal Pod Autoscaler), alle statistiche e alle informazioni generali e personalizzate.
  • Visualizza i servizi e gli ingressi, nonché le loro relazioni con i pod e gli endpoint.
  • Visualizza oggetti file e archivi: Persistent Volume e Persistent Volume Claim.
  • Visualizza e modifica ConfigMap e Secret.
  • Visualizza i log.
  • Accesso alla riga di comando nei contenitori.

Uno svantaggio significativo (tuttavia, non per noi) è che non esiste supporto per il lavoro multi-cluster. Il progetto è sviluppato attivamente dalla comunità e mantiene le funzionalità rilevanti con il rilascio di nuove versioni e specifiche dell'API Kubernetes: l'ultima versione del pannello è v2.0.1 22 maggio 2020 - Testato per la compatibilità con Kubernetes 1.18.

2. lente

Panoramica delle GUI per Kubernetes

Il progetto si posiziona come un ambiente di sviluppo integrato completo (IDE) per Kubernetes. Inoltre, è ottimizzato per funzionare con molti cluster e un gran numero di pod in esecuzione al loro interno (testato su 25 pod).

Principali caratteristiche/capacità di Lens:

  • Applicazione standalone che non richiede l'installazione di nulla all'interno del cluster (più precisamente, Prometheus sarà richiesto per ottenere tutte le metriche, ma per questo può essere utilizzata anche un'installazione esistente). L'installazione "principale" viene eseguita su un personal computer con sistema operativo Linux, macOS o Windows.
  • Gestione multi-cluster (centinaia di cluster supportati).
  • Visualizzazione dello stato del cluster in tempo reale.
  • Grafici e tendenze sull'utilizzo delle risorse con cronologia basata su Prometheus integrato.
  • Accesso alla riga di comando dei contenitori e sui nodi del cluster.
  • Supporto completo per Kubernetes RBAC.

Versione corrente - 3.5.0 del 16 giugno 2020 Originariamente creato da Kontena, oggi tutta la proprietà intellettuale è stata trasferita a un'organizzazione speciale Laboratori Lakend, chiamato "un'unione di fanatici e tecnologi nativi del cloud", che è responsabile della "preservazione e disponibilità del software e dei prodotti Open Source di Kontena".

Lens è il secondo progetto più popolare su GitHub dalla GUI per la categoria Kubernetes, "perdendo" solo la Kubernets Dashboard stessa. Tutte le altre soluzioni Open Source non appartenenti alla categoria CLI* hanno una popolarità significativamente inferiore.

* Vedi i K9 nella parte bonus della recensione.

3. Kubernetico

Panoramica delle GUI per Kubernetes

Questa è un'applicazione proprietaria installata su un personal computer (sono supportati Linux, macOS, Windows). I suoi autori promettono una completa sostituzione dell'utilità della riga di comando e, con essa, non è necessario ricordare i comandi e persino un aumento di dieci volte della velocità.

Una delle caratteristiche interessanti dello strumento è il supporto integrato per i grafici Helm e uno degli svantaggi è la mancanza di metriche sulle prestazioni dell'applicazione.

Caratteristiche principali di Kubernetic:

  • Comoda visualizzazione dello stato del cluster. Una schermata per visualizzare tutti gli oggetti cluster correlati e le loro dipendenze; stato di prontezza rosso/verde per tutti gli oggetti; modalità di visualizzazione dello stato del cluster con aggiornamenti dello stato in tempo reale.
  • Pulsanti di azione rapida per eliminare e ridimensionare l'applicazione.
  • Supporto per il funzionamento multi-cluster.
  • Semplice lavoro con i namespace.
  • Supporto per grafici Helm e repository Helm (inclusi quelli privati). Installazione e gestione dei grafici nell'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 web;
  • presentazione;
  • deposito (~500 stelle GitHub);
  • Licenza: Apache 2.0
  • In breve: "Kubevious rende i cluster Kubernetes, la configurazione delle applicazioni e la visualizzazione dello stato sicuri e facili da capire."

Panoramica delle GUI per Kubernetes

L'idea del progetto è creare uno strumento progettato per analizzare ed eseguire il debug delle configurazioni dell'applicazione distribuite in un cluster. Gli autori si sono concentrati principalmente sull'implementazione di queste funzionalità, lasciando le cose più generali per dopo.

Caratteristiche e funzioni principali di Kubevious:

  • Visualizzazione cluster in modo incentrato sull'applicazione: gli oggetti correlati nell'interfaccia sono raggruppati, allineati in una gerarchia.
  • Visualizzazione visiva delle dipendenze nelle configurazioni e conseguenze a cascata delle loro modifiche.
  • Visualizzazione degli errori di configurazione del cluster: uso improprio di etichette, porte mancate, ecc. (A proposito, se sei interessato a questa funzione, presta attenzione a Polarisdi cui noi già scritto.)
  • Oltre al punto precedente, è disponibile il rilevamento di contenitori potenzialmente pericolosi, ad es. avere troppi privilegi (attributi hostPID, hostNetwork, hostIPC, montare docker.sock eccetera).
  • Sistema di ricerca avanzata per il cluster (non solo per i nomi degli oggetti, ma anche per le loro proprietà).
  • Strumenti per la pianificazione della capacità e l'ottimizzazione delle risorse.
  • "Macchina del tempo" incorporata (la capacità di vedere i cambiamenti precedenti nella configurazione degli oggetti).
  • Gestione del controllo degli accessi in base al ruolo con una tabella pivot correlata di ruoli, associazioni di ruoli e account di servizio.
  • Funziona con un solo cluster.

Il progetto ha una storia molto breve (il primo rilascio è avvenuto l'11 febbraio 2020) e sembra che ci sia stato un periodo di stabilizzazione o rallentamento nello sviluppo. Se le versioni precedenti sono state rilasciate frequentemente, l'ultima versione (v0.5 15 aprile 2020) è rimasto indietro rispetto al ritmo iniziale di sviluppo. Ciò è probabilmente dovuto al numero ridotto di contributori: ce ne sono solo 4 nella cronologia del repository e tutto il lavoro effettivo viene svolto da una persona.

5. Kubewise

  • Pagina del progetto;
  • Licenza: proprietaria (diventerà Open Source);
  • In breve: "Un semplice client multipiattaforma per Kubernetes".

Panoramica delle GUI per Kubernetes

Un nuovo prodotto di VMware, originariamente creato come parte di un hackathon interno (a giugno 2019). Installato su un personal computer, funziona sulla base di elettrone (Linux, macOS e Windows supportati) e richiede kubectl v1.14.0 o successivo.

Caratteristiche principali di Kubewise:

  • Interazione dell'interfaccia con le entità Kubernetes più comunemente utilizzate: nodi, spazi dei nomi, ecc.
  • Supporto per più file kubeconfig per diversi cluster.
  • Terminale con la possibilità di impostare una variabile d'ambiente KUBECONFIG.
  • Genera file kubeconfig personalizzati per lo spazio dei nomi specificato.
  • Funzionalità di sicurezza avanzate (RBAC, password, account di servizio).

Finora, il progetto ha solo una versione: la versione 1.1.0 del 26 novembre 2019. Inoltre, gli autori avevano in programma di rilasciarlo immediatamente come Open Source, ma a causa di problemi interni (non legati a questioni tecniche) non hanno potuto farlo. A partire da maggio 2020, gli autori stanno lavorando alla prossima versione e allo stesso tempo dovrebbero avviare il processo di apertura del codice.

6. Console OpenShift

Panoramica delle GUI per Kubernetes

Nonostante il fatto che questa interfaccia web faccia parte della distribuzione OpenShift (è installata lì usando operatore speciale), autori previsto la possibilità di installarlo/utilizzarlo nelle normali installazioni Kubernetes (vanilla).

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

  • Approccio all'interfaccia condivisa: due "prospettive" delle possibilità disponibili nella console: per gli amministratori e per gli sviluppatori. Modalità punto di vista dello sviluppatore raggruppa gli oggetti in una forma più comprensibile per gli sviluppatori (per applicazioni) e concentra l'interfaccia sulla risoluzione di attività tipiche come la distribuzione di 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 per i carichi di lavoro in progetti e applicazioni. In una delle ultime versioni - v4.3 - apparso speciale Pannello di controllo del progetto, che visualizza i soliti dati (il numero e gli stati di distribuzioni, pod e così via; consumo di risorse e altre metriche) in una sezione del progetto.
  • Visualizzazione aggiornata in tempo reale dello stato del cluster, modifiche (eventi) intervenute in esso; visualizzazione dei log.
  • Visualizza i dati di monitoraggio basati su Prometheus, Alertmanager e Grafana.
  • Gestione degli operatori rappresentati in hub operatore.
  • Gestisci le build che vengono eseguite tramite Docker (da un repository specificato con un Dockerfile), S2I o utilità esterne arbitrarie.

NB: Non abbiamo aggiunto altri al confronto Distribuzioni Kubernetes (ad esempio, il molto meno noto Kubesfera): nonostante il fatto che la GUI possa essere molto avanzata in essi, di solito fa parte dello stack integrato di un sistema di grandi dimensioni. Tuttavia, se ritieni che non ci siano abbastanza soluzioni che funzionino completamente nell'installazione di Vanilla K8s, faccelo sapere nei commenti.

premio

1. Portainer su Kubernetes in versione beta

  • sito web;
  • deposito (~100 stelle GitHub);
  • Licenza: Zlib(?) (lo stesso per il progetto principale).

Un progetto del team Portainer, che ha sviluppato l'omonima interfaccia popolare per lavorare con Docker. Poiché il progetto è in una fase iniziale di sviluppo (la prima e unica versione beta è uscito 16 aprile 2020), non ne abbiamo valutato le caratteristiche. Tuttavia, potrebbe interessare a molti: se si tratta di te, segui lo sviluppo.

2. Pannello di ghiaccio

  • sito web;
  • Licenza: proprietaria;
  • In breve: "Visual Kubernetes Editor".

Panoramica delle GUI per Kubernetes

Questa giovane applicazione desktop mira a visualizzare e gestire le risorse Kubernetes in tempo reale con una semplice interfaccia drag & drop. Gli oggetti attualmente supportati sono Pod, Service, Deployment, StatefulSet, PersistentVolume, PersistentVolumeClaim, ConfigMap e Secret. Presto promettono di aggiungere il supporto per Helm. I principali svantaggi sono la vicinanza del codice (è previsto apertura "in qualche modo") e la mancanza di supporto per Linux (finora sono disponibili solo versioni per Windows e macOS, anche se molto probabilmente anche questa è solo una questione di tempo).

3.k9s

Panoramica delle GUI per Kubernetes

L'utilità era solo nella parte bonus della recensione perché offre una GUI della console. Tuttavia, gli autori hanno letteralmente spremuto il massimo dal terminale, offrendo non solo un'interfaccia user-friendly, ma anche 6 temi predefiniti e un sistema avanzato di scorciatoie da tastiera e alias di comando. Il loro approccio approfondito non si è limitato all'aspetto: le funzionalità di k9s sono piacevolmente impressionanti: gestione delle risorse, visualizzazione dello stato del cluster, visualizzazione delle risorse in una rappresentazione gerarchica con dipendenze, visualizzazione dei registri, supporto RBAC, estensione delle capacità tramite plug-in ... Tutto ciò ha attratto alla vasta comunità di K8s: il numero Le stelle GitHub del progetto sono buone quasi quanto la Dashboard ufficiale di Kubernetes!

4. Pannelli di controllo dell'applicazione

E alla fine della recensione - una mini-categoria separata. Comprendeva due interfacce Web progettate non per la gestione completa dei cluster Kubernetes, ma per gestire ciò che viene distribuito in essi.

Come sai, uno degli strumenti più maturi e diffusi per il deployment di applicazioni complesse in Kubernetes è Helm. Durante il periodo della sua esistenza, molti pacchetti (grafici Helm) si sono accumulati per una facile distribuzione molte applicazioni popolari. Pertanto, la comparsa di strumenti visivi appropriati che consentano di gestire il ciclo di vita dei grafici è abbastanza logica.

4.1. Monoculare

  • deposito (1300+ stelle GitHub);
  • Licenza: Apache 2.0;
  • In breve: “Un'applicazione web per la ricerca e la scoperta di grafici Helm su più repository. Funge da base per il progetto dell'hub Helm."

Panoramica delle GUI per Kubernetes

Questo sviluppo degli autori di Helm è installato in Kubernetes e funziona all'interno dello stesso cluster, eseguendo l'attività. Tuttavia, al momento, il progetto non è quasi sviluppato. Il suo scopo principale è supportare l'esistenza dell'Helm Hub. Per altre esigenze, gli autori consigliano Kubeapps (vedi sotto) o Red Hat Automation Broker (parte di OpenShift, ma anch'esso non più sviluppato).

4.2. Kubeapps

Panoramica delle GUI per Kubernetes

Un prodotto di Bitnami, anch'esso installato in un cluster Kubernetes, ma differisce da Monocular per il suo focus iniziale sull'utilizzo di repository privati.

Funzioni e caratteristiche principali di Kubeapps:

  • Visualizza e installa i grafici Helm dai repository.
  • Controlla, aggiorna e rimuovi le applicazioni basate su Helm installate nel cluster.
  • Supporto per repository di grafici personalizzati e privati ​​(supporta ChartMuseum e JFrog Artifactory).
  • Visualizzazione e utilizzo di servizi esterni - dal catalogo dei servizi e dai broker di servizi.
  • Pubblicazione delle applicazioni installate utilizzando il meccanismo di binding del catalogo dei servizi.
  • Supporto per l'autenticazione e la separazione dei diritti tramite RBAC.

Tabella riassuntiva

Di seguito una tabella riassuntiva in cui abbiamo cercato di riassumere e aggregare le principali caratteristiche delle interfacce visuali esistenti per facilitare il confronto:

Panoramica delle GUI per Kubernetes
(Versione online della tabella disponibile su Google Documenti.)

conclusione

Le GUI per Kubernetes sono una nicchia piuttosto specifica e giovane. Tuttavia, si sta sviluppando molto attivamente: è già possibile trovare sia soluzioni abbastanza mature, sia molto giovani, che hanno ancora spazio per crescere. Si rivolgono a una varietà di applicazioni, offrendo funzionalità e aspetto per soddisfare quasi tutti i gusti. Speriamo che questa recensione ti aiuti a scegliere lo strumento più adatto alle tue esigenze attuali.

PS

Grazie! kvaps per i dati su OpenShift Console per la tabella di confronto!

Leggi anche sul nostro blog:

Fonte: habr.com

Aggiungi un commento