Cos'è Istio?

Copia URL

Istio è un service mesh open source che controlla il modo in cui i microservizi condividono tra loro i dati. Completa ed estende Kubernetes per regolare il flusso del traffico, applica i criteri e monitora le comunicazioni in un ambiente costituito da microservizi. Include API che consentono di integrare Istio in qualsiasi piattaforma di registrazione o sistema di gestione di telemetria e criteri. Inoltre, può essere eseguito in ambienti on premise, cloud, containerizzati e virtuali.

Le architetture di microservizi suddividono le operazioni delle applicazioni aziendali in servizi modulari, semplificando così la scalabilità e la gestione. Tuttavia, a mano a mano che queste applicazioni basate sui microservizi crescono in termini di dimensioni e complessità, diventano più difficili da monitorare e gestire. Il service mesh può rispondere ai problemi legati all'architettura catturando o intercettando il traffico tra servizi e può modificare, reindirizzare o creare nuove richieste ad altri servizi.

L'architettura di Istio si distingue in piano dati e piano di controllo. Istio usa i proxy Envoy ad alte prestazioni, che vengono distribuiti come sidecar e gestiscono il traffico per tutti i servizi del service mesh. Nel piano dati, gli sviluppatori possono aggiungere il supporto di Istio a un servizio grazie al deployment di un proxy sidecar all'interno dell'ambiente. Il proxy sidecar affianca un microservizio e indirizza le richieste da e verso altri proxy. Insieme, i proxy formano una rete mesh che intercetta le comunicazioni tra i microservizi. Il piano di controllo gestisce e configura i proxy affinché indirizzino il traffico. Configura inoltre i componenti per applicare i criteri e raccogliere i dati di telemetria.

Risorse da Red Hat

Gestione del traffico

Istio consente di controllare in modo dettagliato il traffico tra i servizi. È caratterizzato da funzionalità avanzate di indirizzamento del traffico, tra cui il supporto per lo svolgimento di test e deployment come: 

  • Test A/B, che consiste nel confronto tra due release.
  • Deployment canary, ossia il rilascio di un deployment di test più piccolo.
  • Deployment blue green, ovvero la creazione di due ambienti identici per ridurre i tempi di fermo e mitigare il rischio. 

Istio gestisce inoltre il bilanciamento del carico tra le istanze del servizio. Ciò significa che il traffico in uscita da un servizio è intercettato dal proxy sidecar; questo inoltra la richiesta alla destinazione appropriata in base a regole di indirizzamento definite nel piano di controllo.

Individuazione dei servizi e resilienza 

Istio include funzionalità di individuazione automatica dei servizi all'interno del mesh. Può eseguire test di iniezione degli errori per simulare problemi e valutare in che modo si comporta il sistema in condizioni inusuali. Istio è dotato inoltre di meccanismi di resilienza, come nuovi tentativi, timeout e interruttori. Il piano di controllo tiene traccia di tutte le istanze del servizio e della loro posizione; ogni nuova istanza avviata viene registrata sul piano di controllo.

Osservabilità ed estensibilità

Istio garantisce osservabilità ed estensibilità. Offre il tracciamento distribuito con l'integrazione di strumenti come JaegerZipkin, nonché metriche e telemetria grazie a Prometheus. Include dashboard dettagliate a livello di servizio per la visualizzazione della comunicazione tra i servizi. I proxy sidecar raccolgono metriche, come il totale delle richieste, la latenza e la frequenza di errore, che poi inviano al piano di controllo o agli strumenti di monitoraggio. Istio può essere integrato con sistemi esterni come strumenti di monitoraggio, sistemi di registrazione e motori dei criteri personalizzati; in questo modo è possibile aggiungere al service mesh nuove funzionalità.

Sicurezza e applicazione dei criteri

Il protocollo mTLS (Mutual Transport Layer Security) garantisce privacy e sicurezza tra due applicazioni autenticando reciprocamente entrambe le parti. In un modello TLS, l'autenticazione è unidirezionale, ossia il server autentica il client. Con il sistema mTLS, invece, il client e il server o il sito web e il browser web si autenticano a vicenda. Istio usa l'mTLS per garantire una comunicazione sicura tra servizi, ma anche il controllo degli accessi basato sui ruoli (RBAC) e criteri di sicurezza delle API, nonché la gestione dei certificati e la rotazione automatica delle chiavi.

Istio centralizza la configurazione per i criteri dei servizi come quote, limitazioni della frequenza e autenticazione/autorizzazione. Offre un controllo dettagliato delle interazioni fra i servizi grazie a criteri di accesso. I criteri di autenticazione, la limitazione della frequenza e il controllo degli accessi sono applicati a livello di proxy, garantendo coerenza tra i servizi.

Scopri di più su Istio su Red Hat Developer

Istio include la modalità ambiente, una nuova modalità del piano dati che viene talvolta definita "sidecarless", perché prevede che i pod dei carichi di lavoro partecipino al mesh senza l'ausilio dei proxy sidecar. In modalità ambiente, i proxy sidecar sono sostituiti da un piano dati integrato nell'infrastruttura, che conserva la sicurezza zero trust, la telemetria e la gestione del traffico di Istio. Eliminando i sidecar, la modalità ambiente riduce anche le risorse dell'infrastruttura necessarie per l'utilizzo di memoria e CPU. Nella modalità normale di Istio, il proxy Envoy entra in contatto con ogni pod dell'applicazione, mentre nella modalità ambiente i pod hanno i propri container. 

Il service mesh di Istio può essere usato per particolari attività e obiettivi. Di seguito trovi alcuni scenari di utilizzo di Istio ed esempi di come le aziende possono usare un service mesh per raggiungere i propri obiettivi. 

Controllo del traffico dei microservizi

Una grande piattaforma di ecommerce distribuisce aggiornamenti frequenti ai servizi, come funzionalità del carrello, opzioni di pagamento e inventario. Con un service mesh, l'organizzazione può sfruttare i deployment canary per rilasciare le nuove funzionalità in modo graduale ad alcuni utenti. Con i deployment blue green può spostare il traffico dalla versione meno recente a quella più recente, senza tempi di fermo o interruzioni all'esperienza utente. Grazie ai test A/B, l'azienda può indirizzare specifiche percentuali di traffico a diverse versioni del servizio.

Comunicazione sicura tra servizi

Una compagnia di servizi finanziari elabora i dati sensibili degli utenti fra più servizi per gestire i conti e rilevare le attività fraudolente. Con il service mesh, può applicare il protocollo mTLS per aumentare la sicurezza e crittare la comunicazione tra i servizi, nonché gestire le loro interazioni con un RBAC granulare.

Resilienza e tolleranza agli errori

Una piattaforma di streaming video desidera garantire la riproduzione ininterrotta anche in caso di guasto o rallentamento di un servizio specifico. Con un service mesh ha a disposizione capacità di interruzione con cui sospendere automaticamente l'invio di richieste ai servizi interessati. Grazie alle ripetizioni dei tentativi con backoff esponenziale, le richieste non riuscite vengono ripetute in modo intelligente. Il bilanciamento del carico del service mesh distribuisce il traffico tra le istanze del servizio funzionanti. 

Osservabilità e monitoraggio

Una piattaforma software-as-a-service (SaaS) in esecuzione su Kubernetes deve diagnosticare alcuni errori di latenza in decine di microservizi. Un service mesh garantisce il tracciamento distribuito, con cui gli sviluppatori possono monitorare le richieste tra i servizi. Offre inoltre telemetria in tempo reale, inclusi tassi di errore e pattern di traffico.

Integrazione del gateway API

Un gateway API viene utilizzato per esporre i servizi ai client esterni mentre i servizi interni comunicano all'interno del mesh. Un service mesh protegge le comunicazioni interne fra servizi, pur consentendo il traffico esterno veicolato dal gateway API. Inoltre, applica i criteri in modo uniforme così che le organizzazioni abbiano la certezza che le regole dei servizi interni, come la limitazione della frequenza, siano coerenti.

Conformità normativa

Un fornitore di servizi sanitari deve assicurare la conformità all'HIPAA (Health Insurance Portability and Accountability Act) per rendere sicura la trasmissione dei dati. Con un service mesh, può applicare standard di crittografia come TLS. Il service mesh fornisce inoltre log di audit dettagliati sulla comunicazione dei servizi per scopi di conformità e documentazione.

Ambienti dinamici

Un'azienda di videogiochi amplia o riduce su scala i servizi durante le ore di maggiore utilizzo dei giochi o in occasione di eventi promozionali. Un service mesh può individuare e indirizzare in automatico il traffico alle nuove istanze dei servizi. Garantisce inoltre prestazioni uniformi durante le attività di estensione o riduzione su scala.

Scopri Red Hat OpenShift Service Mesh 3.0 con l'anteprima tecnica

Red Hat® OpenShift® Service Mesh, basato sul progetto Istio, offre soluzioni a un'ampia gamma di problemi e scenari di utilizzo in un'architettura di microservizi creando un punto di controllo centralizzato in un'applicazione. OpenShift Service Mesh aggiunge un livello trasparente alle applicazioni distribuite senza rendere necessarie modifiche al codice. Il mesh introduce un modo semplice per creare una rete di servizi distribuiti che offre capacità di individuazione, bilanciamento del carico, autenticazione tra servizi, ripristino dagli errori, metriche e monitoraggio.

Red Hat OpenShift Service Mesh è testato e ottimizzato per Red Hat OpenShift. È inoltre compatibile con funzionalità specifiche di OpenShift come operatori e pipeline di integrazione e distribuzione continue (CI/CD). Dispone del supporto aziendale Red Hat e riceve regolarmente aggiornamenti e patch per garantire la sicurezza e la stabilità. OpenShift Service Mesh funziona su diversi cluster Red Hat OpenShift, per offrire coerenza in ambienti di cloud ibrido o multicloud. Con la multitenancy, consente alle organizzazioni di gestire service mesh separati per team o carichi di lavoro diversi. Le funzionalità di sicurezza integrate abilitano mTLS di default per tutti i servizi e si integrano con OAuth di Red Hat OpenShift garantendo funzionalità affidabili di autenticazione e autorizzazione.

Hub

Il blog ufficiale di Red Hat

Leggi gli articoli del blog di Red Hat per scoprire novità e consigli utili sulle nostre tecnologie, e avere aggiornamenti sul nostro ecosistema di clienti, partner e community.

Tutte le versioni di prova dei prodotti Red Hat

Grazie alle versioni di prova gratuite dei prodotti Red Hat potrai acquisire esperienza pratica, prepararti per le certificazioni o capire se il prodotto che hai scelto è giusto per le esigenze della tua organizzazione.

Continua a leggere

Automazione open source: differenze tra Ansible e Chef

Ansible e Chef sono strumenti open source per l'automazione dell'IT sviluppati dalla community. Questo articolo illustra in maniera approfondita le analogie e le differenze fra Ansible e Chef.

I vantaggi di Ansible, Terraform, Puppet, Chef e Salt

Scopri cos'hanno in comune e quali sono le differenze tra Ansible, Terraform, Puppet, Chef e Salt.

Cos'è Podman Desktop?

Podman Desktop è uno strumento open source gratuito pensato per semplificare l'utilizzo dei container in ambienti di sviluppo locali.

Open source: risorse consigliate