Annuncio dell'interfaccia web Kubernetes Web View (e breve panoramica di altre interfacce web per Kubernetes)

Nota del traduttore.: L'autore del materiale originale è Henning Jacobs di Zalando. Ha creato una nuova interfaccia web per lavorare con Kubernetes, posizionata come "kubectl per il web". Perché è nato questo nuovo progetto Open Source e quali criteri non soddisfacevano le soluzioni esistenti — leggi nel suo articolo.

Annuncio dell'interfaccia web Kubernetes Web View (e breve panoramica di altre interfacce web per Kubernetes)

In questa pubblicazione esamino diverse interfacce web Kubernetes open source, presento le mie richieste per un'interfaccia utente universale e spiego perché l'ho sviluppata Kubernetes Web View — un'interfaccia progettata per semplificare il supporto e il troubleshooting in più cluster simultaneamente.

Casi d'uso

In Zalando gestiamo un grande numero di utenti Kubernetes (900+) e cluster (100+). Ci sono alcuni casi d'uso tipici in cui un'apposita risorsa web sarebbe estremamente utile:

  1. comunicazione tra colleghi nel supporto;
  2. rispondere a incidenti e indagare sulle loro cause.

Supporto

Dalla mia esperienza, la comunicazione nel supporto spesso appare così:

— Aiuto, il nostro servizio XYZ non è disponibile!
— Cosa vedi quando esegui kubectl describe ingress ...?

O qualcosa di simile per CRD:

— Ho un problema con il servizio di identificazione…
— Cosa restituisce il comando kubectl describe platformcredentialsset ...?

Di solito, questa comunicazione si riduce all'inserimento di varie variazioni del comando kubectl per identificare il problema. Di conseguenza, entrambe le parti della conversazione sono costrette a passare continuamente tra il terminale e la chat web, e osservano situazioni diverse.

Pertanto, vorrei che il frontend web per Kubernetes consentisse quanto segue:

  • gli utenti potessero scambiare link e vedere la stessa cosa;
  • faciliti l'evitare errori umani nel supporto: ad esempio, accedere al cluster sbagliato nel terminale, errori di battitura nei comandi CLI, ecc.;
  • consentirebbe di generare visualizzazioni personalizzate da inviare ai colleghi, cioè aggiungere colonne di etichette, visualizzare più tipi di risorse su una pagina;
  • idealmente, questo strumento web dovrebbe permettere di impostare link "profondi" a sezioni specifiche di YAML (ad esempio, puntando a un parametro errato che causa errori).

Gestione degli incidenti e analisi

La reazione agli incidenti nell'infrastruttura richiede consapevolezza situazionale, capacità di valutare l'impatto e ricerca di schemi nei cluster. Ecco alcuni esempi nella vita reale:

  • un servizio di produzione critico presenta problemi e devi trovare tutte le risorse Kubernetes per nome in tutti i cluster, per risolvere i problemi;
  • i nodi iniziano a cadere durante la scalabilità e devi trovare tutti i pod con stato «Pending» in tutti i cluster, per valutare l'entità del problema;
  • utenti specifici segnalano un problema con il DaemonSet distribuito in tutti i cluster e deve essere chiarito se il problema è di natura totale..

La mia soluzione standard in questi casi è qualcosa del tipo for i in $clusters; do kubectl ...; done. Ovviamente, è possibile sviluppare uno strumento che fornisca funzionalità simili.

Le interfacce web esistenti di Kubernetes

Il mondo Open Source delle interfacce web per Kubernetes non è molto vasto*, quindi ho provato a raccogliere ulteriori informazioni utilizzando Twitter:

Annuncio dell'interfaccia web Kubernetes Web View (e breve panoramica di altre interfacce web per Kubernetes)

* La mia spiegazione sul numero limitato di interfacce web per Kubernetes: i servizi cloud e i fornitori di Kubernetes offrono spesso i propri frontend, rendendo il mercato delle interfacce Kubernetes 'buone' relativamente piccolo.

Ho scoperto attraverso un tweet K8Dash, Kubernator e Octant. Esaminiamo questo e altre soluzioni Open Source esistenti e cerchiamo di capire cosa rappresentano.

K8Dash

«K8Dash è il modo più semplice per gestire un cluster Kubernetes».

Annuncio dell'interfaccia web Kubernetes Web View (e breve panoramica di altre interfacce web per Kubernetes)

K8Dash sembra buono e funziona rapidamente, ma ha diversi svantaggi per gli scenari d'uso sopra elencati:

  • Funziona solo all'interno di un singolo cluster.
  • Ordinamento e filtraggio sono possibili, ma non hanno link permanenti.
  • Manca il supporto per le Custom Resource Definitions (CRDs).

Kubernator

«Kubernator è un'interfaccia utente alternativa per Kubernetes. A differenza del pannello ad alto livello di Kubernetes Dashboard, offre un controllo a basso livello e una panoramica eccellente di tutti gli oggetti nel cluster, con la possibilità di creare nuovi oggetti, modificarli e risolvere conflitti. Essendo un'applicazione completamente client (come kubectl), non richiede alcun backend oltre al server API di Kubernetes e tiene conto delle regole di accesso al cluster.»

Annuncio dell'interfaccia web Kubernetes Web View (e breve panoramica di altre interfacce web per Kubernetes)

È una descrizione piuttosto precisa di Kubernator.Purtroppo, manca di alcune funzionalità:

  • Gestisce solo un cluster.
  • Non c'è una modalità di visualizzazione a lista (cioè, non è possibile visualizzare tutti i pod con stato «Pending»).

Kubernetes Dashboard

«Kubernetes Dashboard è un'interfaccia web universale per i cluster Kubernetes. Permette agli utenti di gestire le applicazioni che vengono eseguite nel cluster e di risolvere i problemi, oltre a gestire il cluster stesso.»

Annuncio dell'interfaccia web Kubernetes Web View (e breve panoramica di altre interfacce web per Kubernetes)

Sfortunatamente, Kubernetes Dashboard non aiuta particolarmente nelle mie attività di supporto e risposta agli incidenti, perché presenta:

  • nessun link permanente, per esempio, quando filtro le risorse o cambio l'ordine di ordinamento;
  • non esiste un modo semplice per filtrare per stato — ad esempio, vedere tutti i pod con stato "Pending";
  • è supportato solo un cluster;
  • non sono supportati i CRD (questa funzione è in fase di sviluppo);
  • non ci sono colonne personalizzate (ad esempio, colonne con etichette di tipo kubectl -L).

Visualizzazione Operativa di Kubernetes (kube-ops-view)

"Pannello di monitoraggio del cluster K8s".

Annuncio dell'interfaccia web Kubernetes Web View (e breve panoramica di altre interfacce web per Kubernetes)

A Visualizzazione Operativa di Kubernetes un approccio completamente diverso: questo strumento mostra solo i nodi del cluster e i pod utilizzando WebGL, senza alcun dettaglio testuale sugli oggetti. È ideale per una panoramica operativa dello stato del cluster ("i pod stanno fallendo?")*, ma non è adatto per i casi d'uso sopra descritti nel supporto e nella risposta agli incidenti.

* Nota del traduttore.: In questo senso, potrebbe interessarti anche il nostro plugin grafana-statusmap, di cui abbiamo parlato in dettaglio in questo articolo.

Rapporto sulle Risorse di Kubernetes (kube-resource-report)

"Raccogli informazioni sulle richieste di risorse dei pod e del cluster Kubernetes, confrontale con il consumo di risorse e genera HTML statico."

Annuncio dell'interfaccia web Kubernetes Web View (e breve panoramica di altre interfacce web per Kubernetes)

Rapporto sulle Risorse di Kubernetes genera report HTML statici sull'uso delle risorse e sulla distribuzione dei costi tra team/applicazioni nei cluster. Il rapporto è utile in una certa misura per il supporto e la reazione agli incidenti, poiché consente di individuare più rapidamente il cluster in cui è distribuita l'applicazione.

Nota del traduttore.: Nella visualizzazione delle informazioni sulla distribuzione delle risorse e sui loro costi, potrebbe rivelarsi utile anche un servizio e uno strumento Kubecost, di cui abbiamo recentemente pubblicato.

Octant

«Piattaforma web espandibile per sviluppatori, progettata per fornire una migliore comprensione della complessità dei cluster Kubernetes».

Annuncio dell'interfaccia web Kubernetes Web View (e breve panoramica di altre interfacce web per Kubernetes)

Octant, creato in VMware, è un nuovo prodotto di cui ho sentito parlare relativamente di recente. Con questo strumento è comodo esaminare il cluster sulla macchina locale (ci sono anche visualizzazioni), tuttavia tratta la questione del supporto e della reazione agli incidenti solo in misura limitata. Difetti di Octant:

  • Nessuna ricerca tra i cluster.
  • Funziona solo sulla macchina locale (non viene distribuito nel cluster).
  • Impossibile ordinare/filtrare gli oggetti (supportato solo il selettore delle etichette).
  • Impossibile impostare colonne personalizzate.
  • Non è possibile generare un elenco di oggetti per i namespace.

Ho anche riscontrato problemi di stabilità del funzionamento di Octant con i cluster Zalando: in alcune CRD è andato in crash..

Presento Kubernetes Web View

«kubectl per il web».

Annuncio dell'interfaccia web Kubernetes Web View (e breve panoramica di altre interfacce web per Kubernetes)

Analizzando le opzioni di interfaccia disponibili per Kubernetes, ho deciso di crearne una nuova: Kubernetes Web ViewIn fondo ho solo bisogno di tutta la potenza kubectl nel web, ovvero:

  • disponibilità di tutte le operazioni (in sola lettura) in cui gli utenti preferiscono utilizzare kubectl;
  • tutti gli URL devono essere permanenti e rappresentare la pagina in modo originale, affinché i colleghi possano condividerli e utilizzarli in altri strumenti;
  • supporto per tutti gli oggetti Kubernetes, il che consentirà di risolvere problemi di qualsiasi tipo;
  • l'elenco delle risorse deve essere scaricabile per ulteriori utilizzi (in fogli di calcolo, strumenti CLI come grep) e per lo stoccaggio (ad esempio, per i postmortem);
  • supporto per la selezione delle risorse tramite etichette (simile a kubectl get .. -l);
  • possibilità di creare elenchi combinati di diversi tipi di risorse (simile a kubectl get all) per ottenere una visione operativa complessiva tra i colleghi (ad esempio, durante la risposta a un incidente);
  • possibilità di aggiungere link profondi "intelligenti" personalizzati ad altri strumenti, come pannelli di controllo, logger, registri delle applicazioni, ecc., per facilitare la ricerca, la risoluzione dei problemi e la risposta agli incidenti;
  • il frontend deve essere il più semplice possibile (HTML puro), per evitare problemi casuali, come JavaScript bloccato;
  • supporto per più cluster per semplificare l'interazione durante la consulenza remota (ad esempio, ricordando un solo URL);
  • l'analisi situazionale dovrebbe essere semplificata quando possibile (ad esempio, con link per il download delle risorse in tutti i cluster/spazi dei nomi);
  • funzionalità aggiuntive per la creazione di link flessibili ed estrazione di informazioni testuali, ad esempio per poter segnalare ai colleghi una sezione specifica nella descrizione della risorsa (una riga in YAML);
  • possibilità di personalizzazione in base alle esigenze del cliente, ad esempio consentendo la creazione di modelli di visualizzazione speciali per CRD, proprie viste tabellari, modificare gli stili CSS;
  • strumenti per ulteriori esplorazioni nella riga di comando (ad esempio, mostrando comandi completi kubectl, pronti per il copia-incolla);

Fuori dal campo di applicazione di Kubernetes Web View (non obiettivi) rimasti:

  • astrazione degli oggetti Kubernetes;
  • gestione delle applicazioni (ad esempio, gestione dei deployment, Helm charts, ecc.);
  • operazioni di scrittura (devono essere effettuate tramite strumenti sicuri CI/CD e/o GitOps);
  • interfaccia accattivante (JavaScript, temi, ecc.);
  • visualizzazioni (vedi. kube-ops-view);
  • analisi dei costi (vedi. kube-resource-report).

Come Kubernetes Web View aiuta a supportare e rispondere agli incidenti?

Supporto

  • Tutti i link sono permanenti, facilitando la condivisione delle informazioni con i colleghi.
  • È possibile creare le proprie visualizzazioni, ad esempio, visualizzare tutti i Deployment e i Pod con un'etichetta specifica in due cluster specifici (è possibile definire più nomi di cluster e tipi di risorse nel link, separandoli con una virgola).
  • È possibile fare riferimento a determinate righe nel file YAML dell'oggetto, indicando potenziali problemi nella specifica dell'oggetto.

Annuncio dell'interfaccia web Kubernetes Web View (e breve panoramica di altre interfacce web per Kubernetes)
Ricerca nei cluster in Kubernetes Web View

Rispondere agli incidenti

  • Ricerca globale (global search) permette di cercare oggetti in tutti i cluster.
  • Visualizzazioni in forma di elenco possono visualizzare tutti gli oggetti con uno stato/colonna specifica in tutti i cluster (ad esempio, dobbiamo trovare tutti i pod con stato "Pending").
  • Le liste degli oggetti possono essere scaricate in formato valori separati da tabulazione (TSV) per analisi successive.
  • Link esterni configurabili consentono di passare ai relativi pannelli di monitoraggio e ad altri strumenti.

Annuncio dell'interfaccia web Kubernetes Web View (e breve panoramica di altre interfacce web per Kubernetes)
Kubernetes Web View: elenco di pod con stato "Pending" in tutti i cluster

Se vuoi provare Kubernetes Web View, ti consiglio di dare un'occhiata a documentazione o di visionare una demo dal vivo.

Certo, l'interfaccia potrebbe essere migliore, ma al momento Kubernetes Web View è uno strumento per "utenti esperti" che non temono di manipolare manualmente gli URL se necessario. Se hai commenti/aggiustamenti/suggerimenti, ti prego di contattarmi su Twitter!

Questo articolo è un breve racconto delle premesse che hanno portato alla creazione di Kubernetes Web View. Ne seguiranno altri! (Nota del traduttore.: Da aspettarsi nel blog dell'autore.)

P.S. dal traduttore

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