Cos'è Istio? Spiegazione della mesh del servizio Kubernetes

Le architetture di microservizi risolvono alcuni problemi ma ne introducono altri. La suddivisione delle applicazioni in servizi indipendenti semplifica lo sviluppo, gli aggiornamenti e la scalabilità. Allo stesso tempo, ti offre molte più parti mobili da collegare e proteggere. La gestione di tutti i servizi di rete - bilanciamento del carico, gestione del traffico, autenticazione e autorizzazione, ecc. - può diventare incredibilmente complessa. 

Esiste un termine collettivo per questo spazio di rete tra i servizi nel tuo cluster Kubernetes: una mesh di servizi . Un progetto di Google, Istio, mira a darti un modo per gestire la rete di servizi del tuo cluster prima che si trasformi in un ringhio di rovi.

Cos'è una mesh di servizi?

Con qualsiasi gruppo di applicazioni in rete, c'è una sfilza di comportamenti comuni che tendono a sorgere intorno a loro. Bilanciamento del carico, ad esempio: ci sono pochi casi in cui un gruppo di servizi in rete non ne ha bisogno. Allo stesso modo, essere in grado di testare A / B diverse combinazioni di servizi o impostare l'autenticazione end-to-end attraverso catene di servizi. Questi comportamenti sono indicati collettivamente come una  rete di servizi.

La gestione della mesh dei servizi non dovrebbe essere lasciata ai servizi stessi. Nessuno di loro è in una buona posizione per fare qualcosa dall'alto verso il basso, e comunque non dovrebbe essere il loro lavoro. È meglio avere un sistema separato che si trovi tra i servizi e la rete con cui parlano. Questo sistema fornirebbe due funzioni chiave:

  1. Evita che i servizi stessi debbano occuparsi dei noccioli della gestione del traffico di rete: bilanciamento del carico, instradamento, tentativi, ecc.
  2. Fornire un livello di astrazione per gli amministratori, semplificando l'adozione di decisioni di alto livello sul traffico di rete nel cluster: controlli delle policy, metriche e registrazione, rilevamento dei servizi, comunicazioni tra servizi sicure tramite TLS e così via.

Componenti della mesh del servizio Istio

Istio funziona come una mesh di servizi fornendo due elementi architettonici di base per il cluster, un piano dati e un piano di controllo .

Il piano dati gestisce il traffico di rete tra i servizi nella mesh. Tutto questo traffico viene intercettato e reindirizzato da un sistema di proxy di rete. Nel caso di Istio, il proxy è fornito da un progetto open source chiamato Envoy. Un secondo componente nel piano dati, Mixer, raccoglie dati di telemetria e statistiche da Envoy e il flusso del traffico da servizio a servizio.

Il piano di controllo, il nucleo di Istio, gestisce e protegge il piano dati. Configura sia i proxy Envoy che i Mixer che applicano le politiche di rete per i servizi, come chi può parlare con chi e quando. Il piano di controllo fornisce anche un livello di astrazione programmatica per il piano dati e tutti i suoi comportamenti.

Altri tre servizi Istio completano il mix:

Istio Pilot

Istio Pilot prende le regole per il comportamento del traffico fornite dal piano di controllo e le converte in configurazioni applicate da Envoy, in base a come tali cose vengono gestite localmente. Il progetto pilota consentirà a Istio di lavorare con diversi sistemi di orchestrazione oltre a Kubernetes, ma si comporterà in modo coerente tra di loro. 

Cittadella di Istio

Citadel controlla l'autenticazione e la gestione dell'identità tra i servizi.

Istio Galley

Gallery prende le configurazioni specificate dall'utente per Istio e le converte in configurazioni valide per gli altri componenti del piano di controllo. Questo è un altro elemento che consente a Istio di utilizzare diversi sistemi di orchestrazione in modo trasparente.

Funzionalità mesh del servizio Istio

Il primo e più prezioso vantaggio fornito da Istio è l'astrazione, un modo per affrontare le complessità di una rete di servizi a condizioni di mercato. Puoi apportare modifiche alla mesh a livello di programmazione comandando Istio. I servizi connessi alla mesh non devono essere riprogrammati dall'interno per seguire nuove politiche o quote di rete e non è necessario toccare direttamente gli spazi di rete tra di loro.

Inoltre, Istio consente di eseguire modifiche non distruttive o provvisorie alla configurazione di rete del cluster. Se desideri implementare un nuovo layout di rete, in tutto o in parte, o testare A / B la configurazione corrente rispetto a una nuova, Istio ti consente di farlo dall'alto verso il basso. Puoi anche annullare tali modifiche se risultano non salutari.

Un terzo vantaggio è l'osservabilità. Istio fornisce statistiche dettagliate e rapporti su cosa sta succedendo tra contenitori e nodi del cluster. Se si verifica un problema imprevisto, se qualcosa non rispetta le norme o se le modifiche apportate si rivelano controproducenti, sarai in grado di scoprirlo in breve tempo.

Istio fornisce anche modi per soddisfare i modelli comuni che vedi in una rete mesh di servizi. Un esempio è lo schema dell'interruttore, un modo per evitare che un servizio venga bombardato da richieste se il back end segnala problemi e non riesce a soddisfare le richieste in modo tempestivo. Istio fornisce un modello di interruttori di circuito come parte della sua libreria standard di applicazione delle policy.

Infine, sebbene Istio funzioni in modo più diretto e approfondito con Kubernetes, è progettato per essere indipendente dalla piattaforma. Istio si collega agli stessi standard aperti su cui si basa Kubernetes stesso. Istio può anche funzionare in modo autonomo su singoli sistemi o su altri sistemi di orchestrazione come Mesos e Nomad.

Come iniziare con Istio

Se hai già esperienza con Kubernetes, un buon modo per imparare a utilizzare Istio è prendere un cluster Kubernetes, non uno già in produzione !, e installarci sopra Istio tramite un grafico Helm. Quindi puoi distribuire un'applicazione di esempio che dimostri le funzionalità comuni di Istio come la gestione intelligente del traffico e la telemetria. Questo dovrebbe darti una certa esperienza a livello di base con Istio prima di distribuirlo per il servizio mesh nel tuo cluster di applicazioni.

Red Hat, che ha investito in Istio nell'ambito del progetto OpenShift basato su Kubernetes dell'azienda, offre tutorial che ti guideranno attraverso scenari comuni di distribuzione e gestione di Istio.