Panoramica delle interfacce grafiche per Kubernetes

Panoramica delle interfacce grafiche per Kubernetes

Per un utilizzo completo del sistema, è fondamentale conoscere gli strumenti da riga di comando: nel caso di Kubernetes è kubectl. Dall'altra parte, interfacce grafiche ben progettate possono eseguire la maggior parte delle operazioni comuni e aprire ulteriori possibilità nell'operatività dei sistemi.unL'anno scorso abbiamo pubblicato la traduzione

di una breve panoramica dell'interfaccia web per Kubernetes, in concomitanza con l'annuncio dell'interfaccia web . L'autore di quell'articolo e dell'utilità stessa — Henning Jacobs di Zalando — l'ha presentata come il «kubectl per il web». Ha voluto creare uno strumento con funzionalità utili per l'interazione in un formato di assistenza tecnica (ad esempio, mostrare rapidamente un problema con un link web) e per la risposta agli incidenti, cercando problemi in più cluster contemporaneamente. La sua creazione è in continua evoluzione anche attualmente (principalmente grazie allo stesso autore). Kubernetes Web ViewGestendo numerosi cluster Kubernetes di varie dimensioni, siamo anche interessati alla possibilità di fornire ai clienti uno strumento di lavoro visivo. Nella scelta dell'interfaccia adatta, le seguenti funzionalità sono state per noi fondamentali:

Gestendo numerosi cluster Kubernetes di diverse dimensioni, siamo interessati anche noi alla possibilità di fornire ai clienti uno strumento di lavoro visivo. Nella scelta dell'interfaccia giusta, le seguenti funzionalità sono state per noi fondamentali:

  • 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 del pod;
  • visualizzazione dei log dei pod;
  • visualizzazione dello stato dei pod (descrivi stato);
  • eliminazione dei pod.

Altre funzionalità, come la visualizzazione delle risorse consumate (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 il nostro standard. Poiché il mondo non si ferma (e quindi ci sono sempre nuove interfacce grafiche per Kubernetes), parleremo anche delle attuali alternative, riassumendo tutto in una tabella comparativa alla fine dell'articolo.

NB: Nella panoramica non ripeteremo le soluzioni già trattate in precedente articolo, tuttavia - per completezza - le opzioni pertinenti da essa (K8Dash, Octant, Kubernetes Web View) sono incluse nella tabella finale.

1. Kubernetes Dashboard

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

Panoramica delle interfacce grafiche per Kubernetes

È un pannello multiuso, considerato dagli autori di Kubernetes nella documentazione ufficiale (anche se non è espandibile di default). È progettato per le esigenze quotidiane di gestione e debug delle applicazioni nel cluster. Noi la utilizziamo come un vero e proprio strumento visivo leggero che fornisce agli sviluppatori l'accesso necessario e sufficiente al cluster. Le sue funzionalità coprono tutte le esigenze che sorgono durante l'utilizzo del cluster, (in questo articolo abbiamo mostrato alcune funzionalità del pannello). Come è facile intuire, questo significa che soddisfa tutte le nostre necessità elencate sopra.

Tra le principali funzionalità del Kubernetes Dashboard:

  • Navigazione: visualizzazione dei principali oggetti K8s per spazi dei nomi.
  • Con i privilegi di amministratore, il pannello mostra i nodi, gli spazi dei nomi e i Persistent Volume. Per i nodi sono disponibili statistiche sull'uso della memoria, della CPU, allocazione delle risorse, metriche, stato, eventi e altro.
  • Visualizzazione delle applicazioni distribuite nello spazio dei nomi, in base al loro tipo (Deployment, StatefulSet, ecc.), alle relazioni tra di esse (ReplicaSet, Horizontal Pod Autoscaler), statistiche generali e personalizzate e informazioni.
  • Visualizzazione dei servizi e degli Ingress, così come delle loro relazioni con i pod e gli endpoint.
  • Visualizzazione degli oggetti di archiviazione e dei volumi: Persistent Volume e Persistent Volume Claim.
  • Visualizzazione e modifica di ConfigMap e Secret.
  • Visualizzazione dei log.
  • Accesso alla riga di comando nei contenitori.

Un significativo svantaggio (comunque, non per noi) è l'assenza di supporto per il funzionamento multi-cluster. Il progetto è attivamente sviluppato dalla comunità e supporta le funzionalità più recenti con l'uscita di nuove versioni e specifiche dell'API di Kubernetes: l'ultima versione del pannello è v2.0.1 del 22 maggio 2020 — testata per la compatibilità con Kubernetes 1.18.

2. Lens

Panoramica delle interfacce grafiche per Kubernetes

Il progetto si propone come un ambiente di sviluppo integrato (IDE) completo per Kubernetes. È ottimizzato per gestire più cluster e un elevato numero di pod in esecuzione (testato su 25.000 pod).

Caratteristiche principali/funzionalità di Lens:

  • Applicazione autonoma che non richiede installazioni all'interno del cluster (piuttosto, per ottenere tutte le metriche sarà necessario Prometheus, ma si può utilizzare anche un'installazione già esistente). L'installazione 'principale' è effettuata su computer personali con 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 integrato.
  • Accesso alla riga di comando dei container e ai nodi del cluster.
  • Full supporto per Kubernetes RBAC.

Versione attuale — 3.5.0 dal 16 giugno 2020. La versione iniziale è stata creata da Kontena e, ad oggi, tutta la proprietà intellettuale è stata trasferita a un'organizzazione speciale Lakend Labs, chiamato «unione di appassionati di cloud native e tecnologici», responsabile di «preservare e garantire l'accesso al software open source e ai prodotti Kontena».

Lens è il secondo progetto più popolare su GitHub nella categoria GUI per Kubernetes, superato solo dal proprio Kubernetes Dashboard. 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

È un'applicazione proprietaria che si installa su computer personali (supporta Linux, macOS, Windows). I suoi autori promettono una sostituzione completa dell'utility da linea di comando e, insieme a essa, l'assenza di necessità di memorizzare comandi e addirittura un aumento della velocità di lavoro dieci volte.

Una delle caratteristiche interessanti dello strumento è il supporto integrato per i grafici 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 del cluster e le loro dipendenze; stato di prontezza rosso/verde 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 multicluster.
  • Semplice gestione degli spazi dei nomi.
  • Supporto per Helm charts e repository Helm (inclusi quelli privati). Installazione e gestione dei chart nell'interfaccia web.

Il costo attuale del prodotto è un pagamento una tantum di 30 euro per l'utilizzo da parte di una sola persona per qualsiasi numero di spazi dei nomi 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 progettato per analizzare e debuggare le configurazioni delle applicazioni distribuite in un cluster. Gli autori si sono concentrati in primo luogo sull'implementazione di queste funzionalità, lasciando da parte questioni più generali per dopo.

Caratteristiche principali e funzioni di Kubevious:

  • Visualizzazione del cluster in modo applicativo: gli oggetti correlati nell'interfaccia si raggruppano e si organizzano in gerarchia.
  • Visualizzazione chiara delle dipendenze nelle configurazioni e delle conseguenze in cascata delle loro modifiche.
  • Visualizzazione degli errori di configurazione del cluster: utilizzo errato delle etichette, porte mancanti, ecc. (A proposito, se siete interessati a questa funzionalità, tenete d'occhio Polaris, di cui noi abbiamo già parlato.)
  • In aggiunta al punto precedente — è disponibile il rilevamento di container potenzialmente pericolosi, cioè quelli che hanno privilegi eccessivi (attributi hostPID, hostNetwork, hostIPC, montaggio docker.sock e simili).
  • Avanzato sistema di ricerca nel cluster (non solo per nomi di oggetti, ma anche per le loro proprietà).
  • Strumenti per la pianificazione delle risorse e l'ottimizzazione delle capacità.
  • Una "macchina del tempo" integrata (possibilità di vedere modifiche alle configurazioni degli oggetti avvenute in precedenza).
  • Gestione RBAC tramite una tabella interattiva riassuntiva di Ruoli, Binding dei Ruoli, Account di Servizio.
  • Funziona solo con un cluster.

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

5. Kubewise

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

Panoramica delle interfacce grafiche per Kubernetes

Nuovo prodotto da VMware, originariamente creato durante un hackathon interno (a giugno 2019). Si installa su un computer personale e funziona su Electron (supporta Linux, macOS e Windows) e richiede kubectl della versione 1.14.0 o superiore.

Le principali funzionalità di Kubewise:

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

Attualmente il progetto ha solo un rilascio: versione 1.1.0 del 26 novembre 2019. Gli autori avevano previsto di rilasciarlo come Open Source, ma a causa di problemi interni (non legati a questioni tecniche) non sono riusciti a farlo. A partire da maggio 2020, gli autori stanno lavorando al prossimo rilascio e, contemporaneamente, devono avviare il processo di apertura del codice.

6. OpenShift Console

Panoramica delle interfacce grafiche per Kubernetes

Sebbene questa interfaccia web faccia parte della distribuzione di OpenShift (dove viene installata tramite un operatore speciale), gli autori hanno previsto la possibilità di installarla/utilizzarla anche nelle installazioni standard (vanilla) di Kubernetes.

L'OpenShift Console è in sviluppo da molto tempo e ha incorporato numerose funzioni. Menzioniamo le principali:

  • Approccio condiviso all'interfaccia: due «prospettive» delle funzionalità disponibili nella Console: per amministratori e per sviluppatori. Modalità Developer perspective raggruppa gli oggetti in un formato più comprensibile per gli sviluppatori (per applicazioni) e orienta l'interfaccia verso la risoluzione di attività standard come il deployment delle applicazioni, il monitoraggio dello stato di build/deployment e anche la modifica del codice tramite Eclipse Che.
  • Gestione dei carichi di lavoro, della rete, dello storage e dei diritti di accesso.
  • Suddivisione logica dei carichi di lavoro in progetti e applicazioni. In una delle ultime versioni, v4.3, è stato lanciato speciale Project dashboard, che mostra dati familiari (numero e stati dei deployment, dei pod, ecc.; consumo di risorse e altre metriche) per progetto.
  • Visualizzazione in tempo reale dello stato del cluster e delle modifiche avvenute (eventi); visualizzazione dei log.
  • Visualizzazione dei dati di monitoraggio basati su Prometheus, Alertmanager e Grafana.
  • Gestione degli operatori inclusi in OperatorHub.
  • Gestione delle build eseguite tramite Docker (dal repository specificato con Dockerfile), S2I o strumenti esterni arbitrari.

NB: Non abbiamo incluso nella comparazione altre distribuzioni Kubernetes (ad esempio, molto meno noto KubesphereNonostante l'interfaccia grafica possa essere molto avanzata, di solito fa parte di un stack integrato di un grande sistema. Se pensi che manchino alcune soluzioni che funzionano correttamente anche in una installazione vanilla di K8s, faccelo sapere nei commenti.

Bonus

1. Portainer su Kubernetes in fase beta

  • Sito;
  • Repository (~100 stelle su GitHub);
  • Licenza: Zlib(?) (così è per il progetto principale).

Progetto del team di Portainer, che ha sviluppato l'omonima interfaccia popolare per lavorare con Docker. Poiché il progetto è in una fase iniziale di sviluppo (prima e unica versione beta il 16 aprile 2020), non l'abbiamo valutato per le sue funzionalità. Tuttavia, potrebbe interessare molti: se sei tra questi, segui gli sviluppi. è uscito 16 aprile 2020), non abbiamo valutato le sue funzioni. Tuttavia, potrebbe interessare molti: se è il tuo caso, segui gli sviluppi.

2. IcePanel

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

Panoramica delle interfacce grafiche per Kubernetes

Questa giovane applicazione desktop è progettata per visualizzare e gestire le risorse di Kubernetes in tempo reale con un'interfaccia semplice nello stile del drag & drop. Al momento supporta Pod, Service, Deployment, StatefulSet, PersistentVolume, PersistentVolumeClaim, ConfigMap e Secret. È previsto il supporto per Helm a breve. I principali svantaggi sono la chiusura del codice (si prevede la sua apertura "in qualche modo") e assenza di supporto per Linux (attualmente disponibili solo versioni per Windows e macOS, anche se probabilmente si tratta solo di una questione di tempo).

3. k9s

  • Sito;
  • Dimostrazione;
  • Repository (~7700 stelle su GitHub);
  • Licenza: Apache 2.0;
  • In breve: "Interfaccia a riga di comando per Kubernetes che consente di gestire il cluster in modo elegante."

Panoramica delle interfacce grafiche per Kubernetes

L'utilità è comparsa solo nella sezione bonus della recensione perché offre un'interfaccia GUI a riga di comando. Tuttavia, gli autori hanno letteralmente spremuto il massimo dal terminale, offrendo non solo un'interfaccia conveniente, ma anche 6 temi predefiniti, un ampio sistema di scorciatoie da tastiera e alias per comandi. Il loro approccio completo non si è limitato all'aspetto: le capacità di k9s sono notevolmente impressionanti: gestione delle risorse, visualizzazione dello stato del cluster, visualizzazione delle risorse in rappresentazione gerarchica con dipendenze, visualizzazione dei log, supporto per RBAC, espansione delle funzionalità tramite plugin... Tutto ciò è piaciuto alla vasta comunità di K8s: il numero di stelle su GitHub del progetto è praticamente paragonabile a quello del Kubernetes Dashboard ufficiale!

4. Pannelli di controllo delle applicazioni

E per concludere la recensione, c'è una mini-categoria a parte. In essa sono inclusi due interfacce web, progettate non per la gestione complessiva dei cluster Kubernetes, ma per gestire ciò che vi viene distribuito.

Come è noto, uno degli strumenti più maturi e diffusi per il deployment di applicazioni complesse in Kubernetes è Helm. Nel corso della sua esistenza, si sono accumulati numerosi pacchetti (Helm charts) per un semplice deployment di molte applicazioni popolari.Pertanto, è del tutto logico che siano emersi strumenti visivi corrispondenti, in grado di gestire il ciclo di vita dei chart.

4.1. Monocular

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

Panoramica delle interfacce grafiche per Kubernetes

Questo sviluppo degli autori di Helm viene installato in Kubernetes e opera all'interno di un singolo cluster, svolgendo il compito assegnato. Tuttavia, attualmente il progetto non è praticamente in sviluppo. La sua principale finalità è supportare l'esistenza di Helm Hub. Per altri scopi, gli autori consigliano Kubeapps (vedi oltre) o Red Hat Automation Broker (parte di OpenShift, ma anche questo non è più in sviluppo).

4.2. Kubeapps

Panoramica delle interfacce grafiche per Kubernetes

Un prodotto di Bitnami, anch'esso installato nel cluster Kubernetes, ma si distingue da Monocular per il suo focus iniziale sull'interazione con repository privati.

Funzionalità chiave e caratteristiche di Kubeapps:

  • Visualizzazione e installazione di Helm chart dai repository.
  • Controllo, aggiornamento e rimozione delle applicazioni basate su Helm installate nel cluster.
  • Supporto per il lavoro con repository di chart personalizzati e privati (supporta ChartMuseum e JFrog Artifactory).
  • Visualizzazione e lavoro con servizi esterni — dal Catalogo dei Servizi e dai Broker di Servizi.
  • Pubblicazione delle applicazioni installate tramite il meccanismo dei Bindings del Catalogo dei Servizi.
  • Supporto per autenticazione e separazione dei diritti tramite RBAC.

Tabella finale

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 su Google Docs.)

Conclusione

Le interfacce grafiche per Kubernetes rappresentano una nicchia piuttosto specifica e giovane. Tuttavia, si stanno sviluppando attivamente: già si possono trovare soluzioni sia abbastanza mature che del tutto nuove, che hanno ancora molto da offrire. Si rivolgono a diverse possibilità d'uso, proponendo funzionalità e design che soddisfano praticamente ogni gusto. Speriamo che questa panoramica aiuti a scegliere lo strumento che copre meglio le attuali esigenze.

P.S.

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

Leggete 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