Annuncio di Kubernetes Web View (e una breve panoramica di altre UI Web per Kubernetes)

Nota. trad.: L'autore del materiale originale è Henning Jacobs di Zalando. Ha creato una nuova interfaccia web per lavorare con Kubernetes, che si posiziona come “kubectl per il web”. Perché è apparso un nuovo progetto Open Source e quali criteri non sono stati soddisfatti dalle soluzioni esistenti: leggi il suo articolo.

Annuncio di Kubernetes Web View (e una breve panoramica di altre UI Web per Kubernetes)

In questo post esamino le varie interfacce web Kubernetes open source, espongo i miei requisiti per un'interfaccia utente universale e spiego perché ho sviluppato Visualizzazione Web Kubernetes — un'interfaccia progettata per semplificare il supporto e la risoluzione dei problemi di più cluster contemporaneamente.

Casi d'uso

In Zalando serviamo un gran numero di utenti Kubernetes (900+) e cluster (100+). Esistono un paio di casi d'uso comuni che trarrebbero vantaggio da uno strumento web dedicato:

  1. comunicazione con i colleghi per supporto;
  2. rispondere agli incidenti e indagare sulle loro cause.

Sostegno

Nella mia esperienza, le comunicazioni di supporto spesso assomigliano a queste:

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

O qualcosa di simile per CRD:

— Ho qualche problema con il servizio di identificazione...
— Cosa produce il comando? kubectl describe platformcredentialsset ...?

Tale comunicazione di solito si riduce all'inserimento di varie varianti del comando kubectl per identificare il problema. Di conseguenza, entrambe le parti della conversazione sono costrette a passare costantemente dal terminale alla chat web e osservano una situazione diversa.

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

  • gli utenti potrebbero scambiare link e osservare la stessa cosa;
  • aiuterebbe evitare gli errori umani a supporto: ad esempio, accesso al cluster sbagliato sulla riga di comando, errori di battitura nei comandi CLI, ecc.;
  • consentirebbe generare le tue opinioni inviare ai colleghi, ovvero aggiungere colonne di tag, visualizzare molti tipi di risorse su una pagina;
  • Idealmente, questo strumento web dovrebbe consentirti di impostare collegamenti "profondi" a sezioni specifiche di YAML (ad esempio, segnalando un parametro errato che causa errori).

Risposta e analisi degli incidenti

La risposta agli incidenti infrastrutturali richiede consapevolezza della situazione, capacità di valutare l’impatto e cercare modelli nei cluster. Alcuni esempi di vita reale:

  • Un servizio di produzione critico sta riscontrando problemi e tu ne hai bisogno trova tutte le risorse Kubernetes per nome in tutti i clusterper risolvere i problemi;
  • i nodi iniziano a cadere durante il ridimensionamento e ciò di cui hai bisogno trova tutti i pod con lo stato "In sospeso" in tutti i clustervalutare la portata del problema;
  • i singoli utenti segnalano un problema con DaemonSet distribuito su tutti i cluster e devono risolverlo Il problema è totale?.

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

Interfacce web Kubernetes esistenti

Il mondo open source delle interfacce web per Kubernetes non è molto vasto*, quindi ho provato a raccogliere maggiori informazioni utilizzando Twitter:

Annuncio di Kubernetes Web View (e una breve panoramica di altre UI Web per Kubernetes)

*La mia spiegazione per il numero limitato di interfacce web per Kubernetes: i servizi cloud e i fornitori di Kubernetes solitamente offrono i propri frontend, quindi il mercato per la "buona" interfaccia utente Kubernetes gratuita è relativamente piccolo.

Attraverso un tweet ne sono venuta a conoscenza K8Dash, Kubernator и Ottante. Diamo un'occhiata a loro e alle altre soluzioni Open Source esistenti, proviamo a capire cosa sono.

K8Dash

“K8Dash è il modo più semplice per gestire un cluster Kubernetes.”

Annuncio di Kubernetes Web View (e una breve panoramica di altre UI Web per Kubernetes)

K8Dash Sembra buono e sembra veloce, ma presenta una serie di svantaggi per i casi d'uso sopra elencati:

  • Funziona solo entro i confini di un cluster.
  • L'ordinamento e il filtraggio sono possibili, ma non hanno permalink.
  • Non è disponibile alcun supporto per le definizioni di risorse personalizzate (CRD).

Kubernator

“Kubernator è un’interfaccia utente alternativa per Kubernetes. A differenza della dashboard Kubernetes di alto livello, fornisce controllo di basso livello e visibilità eccellente su tutti gli oggetti nel cluster con la possibilità di crearne di nuovi, modificarli e risolvere i conflitti. Essendo un'applicazione interamente lato client (come kubectl), non richiede alcun backend diverso dal server API Kubernetes stesso, e rispetta anche le regole di accesso al cluster.

Annuncio di Kubernetes Web View (e una breve panoramica di altre UI Web per Kubernetes)

Questa è una descrizione abbastanza accurata Kubernator. Purtroppo mancano alcune funzionalità:

  • Serve solo un cluster.
  • Non esiste una modalità di visualizzazione elenco (ovvero non è possibile visualizzare tutti i pod con lo stato "In sospeso").

Dashboard Kubernetes

“Kubernetes Dashboard è un'interfaccia web universale per i cluster Kubernetes. Consente agli utenti di gestire e risolvere i problemi delle applicazioni in esecuzione in un cluster, nonché di gestire il cluster stesso."

Annuncio di Kubernetes Web View (e una breve panoramica di altre UI Web per Kubernetes)

Sfortunatamente, Dashboard Kubernetes non aiuta realmente con le mie attività di supporto e risposta agli incidenti perché:

  • non ci sono collegamenti permanenti, ad esempio quando filtro le risorse o cambio l'ordinamento;
  • non esiste un modo semplice per filtrare in base allo stato: ad esempio, vedere tutti i pod con lo stato "In sospeso";
  • è supportato un solo cluster;
  • I CRD non sono supportati (questa funzionalità è in fase di sviluppo);
  • nessuna colonna personalizzata (come le colonne etichettate per tipo kubectl -L).

Vista operativa Kubernetes (kube-ops-view)

"Osservatore del dashboard di sistema per lo spazio cluster K8."

Annuncio di Kubernetes Web View (e una breve panoramica di altre UI Web per Kubernetes)

У Vista operativa Kubernetes Un approccio completamente diverso: questo strumento mostra solo i nodi e i pod del cluster utilizzando WebGL, senza dettagli testuali sull'oggetto. È ottimo per una rapida panoramica dell'integrità del cluster (i pod stanno cadendo?)*, ma non è adatto per i casi d'uso di supporto e risposta agli incidenti descritti sopra.

* Nota. trad.: In questo senso potrebbe interessarti anche il nostro plugin grafana-statusmap, di cui abbiamo parlato più approfonditamente in questo articolo.

Report sulle risorse Kubernetes (kube-resource-report)

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

Annuncio di Kubernetes Web View (e una breve panoramica di altre UI Web per Kubernetes)

Rapporto sulle risorse Kubernetes genera report HTML statici sull'utilizzo delle risorse e sulla distribuzione dei costi tra team/applicazioni nei cluster. Il report è piuttosto utile per il supporto e la risposta agli incidenti perché consente di trovare rapidamente il cluster in cui è distribuita l'applicazione.

Nota. trad.: Un servizio e uno strumento possono essere utili anche per visualizzare informazioni sull'allocazione delle risorse e sui relativi costi tra i fornitori di servizi cloud Kubecost, che esaminiamo recentemente pubblicato.

Ottante

"Una piattaforma web estensibile per gli sviluppatori progettata per fornire una maggiore comprensione della complessità dei cluster Kubernetes."

Annuncio di Kubernetes Web View (e una breve panoramica di altre UI Web per Kubernetes)

Ottante, creato da VMware, è un nuovo prodotto di cui sono venuto a conoscenza relativamente di recente. Con il suo aiuto è conveniente esplorare il cluster su una macchina locale (ci sono anche visualizzazioni), ma risolve i problemi di supporto e risposta agli incidenti solo in misura limitata. Svantaggi di Octant:

  • Nessuna ricerca nel cluster.
  • Funziona solo sul computer locale (non viene distribuito in un cluster).
  • Impossibile ordinare/filtrare gli oggetti (è supportato solo il selettore di etichette).
  • Non è possibile specificare colonne personalizzate.
  • Non è possibile elencare gli oggetti per spazio dei nomi.

Ho avuto problemi anche con la stabilità di Octant con i cluster Zalando: su alcuni CRD stava cadendo.

Presentazione di Kubernetes Web View

"kubectl per il web".

Annuncio di Kubernetes Web View (e una breve panoramica di altre UI Web per Kubernetes)

Dopo aver analizzato le opzioni di interfaccia disponibili per Kubernetes, ho deciso di crearne una nuova: Visualizzazione Web Kubernetes. Dopotutto, in effetti, ho solo bisogno di tutto il potere kubectl sul web e precisamente:

  • disponibilità di tutte le operazioni (di sola lettura) per le quali gli utenti preferiscono utilizzare kubectl;
  • tutti gli URL devono essere permanenti e rappresentare la pagina nella sua forma originale in modo che i colleghi possano condividerli e utilizzarli in altri strumenti;
  • supporto per tutti gli oggetti Kubernetes, che ti permetterà di risolvere qualsiasi tipo di problema;
  • gli elenchi di risorse dovrebbero essere scaricabili per ulteriori lavori (nei fogli di calcolo, strumenti CLI come grep) e conservazione (ad esempio, per le autopsie);
  • supporto per la selezione delle risorse per etichetta (simile a kubectl get .. -l);
  • la possibilità di creare elenchi combinati di vari tipi di risorse (simili a kubectl get all) per ottenere un quadro operativo comune tra colleghi (ad esempio, durante una risposta ad un incidente);
  • la possibilità di aggiungere collegamenti profondi intelligenti personalizzati ad altri strumenti come dashboard, logger, registri di applicazioni, ecc. facilitare la risoluzione dei problemi/risoluzione degli errori e la risposta agli incidenti;
  • Il frontend dovrebbe essere il più semplice possibile (HTML puro) per evitare problemi casuali, come JavaScript congelato;
  • supporto per cluster multipli per semplificare l'interazione durante la consulenza remota (ad esempio per ricordare un solo URL);
  • Se possibile, l'analisi situazionale dovrebbe essere semplificata (ad esempio, con collegamenti per scaricare risorse per tutti i cluster/spazi dei nomi);
  • ulteriori opportunità per creare collegamenti flessibili ed evidenziare informazioni di testo, ad esempio, in modo da poter indirizzare i colleghi a una sezione specifica nella descrizione della risorsa (una riga in YAML);
  • la possibilità di personalizzare i requisiti di un cliente specifico, ad esempio, consentendo di creare modelli di visualizzazione speciali per CRD, visualizzazioni di tabelle personalizzate e modificare gli stili CSS;
  • strumenti per ulteriori esplorazioni sulla riga di comando (ad esempio, mostrando i comandi completi kubectl, pronto per la copia);

Oltre le attività risolte in Kubernetes Web View (non gol) è rimasta:

  • astrazione di oggetti Kubernetes;
  • gestione delle applicazioni (ad esempio, gestione della distribuzione, grafici Helm, ecc.);
  • operazioni di scrittura (devono essere eseguite tramite strumenti CI/CD sicuri e/o GitOps);
  • bella interfaccia (JavaScript, temi, ecc.);
  • visualizzazione (cfr kube-ops-view);
  • analisi dei costi (cfr kube-resource-report).

In che modo Kubernetes Web View aiuta con il supporto e la risposta agli incidenti?

Sostegno

  • Tutti i collegamenti sono permanenti, che rende più semplice lo scambio di informazioni con i colleghi.
  • Puoi creare le tue idee, ad esempio, visualizza tutti i deploy e i pod con un'etichetta specifica in due cluster specifici (nel collegamento è possibile specificare diversi nomi di cluster e tipi di risorse, separati da virgole).
  • Puoi fare riferimento a righe specifiche in un file YAML oggetto, indicando potenziali problemi nella specifica dell'oggetto.

Annuncio di Kubernetes Web View (e una breve panoramica di altre UI Web per Kubernetes)
Cerca per cluster in Kubernetes Web View

Risposta all'incidente

  • Ricerca globale (ricerca globale) consente di cercare oggetti in tutti i cluster.
  • Visualizzazioni elenco può visualizzare tutti gli oggetti con un determinato stato/colonna in tutti i cluster (ad esempio, dobbiamo trovare tutti i pod con lo stato "In sospeso").
  • È possibile scaricare elenchi di oggetti in formato con valori separati da tabulazioni (TSV) per un'analisi successiva.
  • Link esterni personalizzabili Ti consente di passare ai dashboard correlati e ad altri strumenti.

Annuncio di Kubernetes Web View (e una breve panoramica di altre UI Web per Kubernetes)
Kubernetes Web View: elenco dei pod con stato "In sospeso" in tutti i cluster

Se vuoi provare Kubernetes Web View, ti consiglio di dare un'occhiata documentazione o guarda dimostrazione dal vivo.

Certo, l'interfaccia potrebbe essere migliore, ma per ora Kubernetes Web View è uno strumento per "utenti avanzati" che non esitano a manipolare manualmente i percorsi URL, se necessario. Se avete commenti/aggiunte/suggerimenti, contattateci con me su Twitter!

Questo articolo è una breve storia del background che ha portato alla creazione di Kubernetes Web View. Ne seguiranno altri! (Nota. trad.: Dovrebbero essere attesi blog dell'autore.)

PSdal traduttore

Leggi anche sul nostro blog:

Fonte: habr.com

Aggiungi un commento