Istio
cloud leadspace
Cos'è Istio?

Scopri di più su Istio, una tecnologia aperta che fornisce agli sviluppatori un modo per connettere, gestire e proteggere senza interruzioni le reti di diversi microservizi.

Istio è un livello di service mesh open source e configurabile che connette, monitora e protegge i contenitori in un cluster Kubernetes. A questa scrittura, Istio lavora in modalità nativa solo con Kubernetes, ma la sua natura open source permette a chiunque di scrivere estensioni che consentano l'esecuzione di Istio in qualsiasi software di cluster. Oggi ci concentreremo sull'uso di Istio con Kubernetes, il suo caso d'uso più diffuso.

Kubernetes è uno strumento per l'orchestrazione di contenitori e l'unità di base di Kubernetes è il nodo. Un nodo è costituito da uno o più contenitori, insieme a file system o altri componenti. Un'architettura di microservizi potrebbe avere una dozzina di nodi differenti, ognuno dei quali rappresenta microservizi diversi. Kubernetes gestisce la disponibilità e l'uso delle risorse dei nodi, aggiungendo i pod se la domanda aumenta con pod autoscaler. Istio immette ulteriori contenitori nel pod per aggiungere sicurezza, gestione e monitoraggio.

Poiché è open source, è possibile eseguire Istio su qualsiasi provider di cloud pubblico che lo supporti e su qualsiasi cloud privato con amministratori disponibili.

Il seguente video illustra più in dettaglio i concetti base di Istio:

Container nelle aziende: una nuova ricerca IBM documenta un momento di grande espansione di container e Kubernetes.

Leggi l'e-book (1,4 MB)


La service mesh di rete

Quando le organizzazioni passano ai microservizi, devono supportare dozzine o centinaia di applicazioni specifiche. Gestire questi endpoint separatamente significa supportare un gran numero di macchine virtuali o VM, compresa la richiesta. Software cluster come Kubernetes può creare i pod e ridimensionarli, ma Kubernetes non fornisce instradamento, regole del traffico o strumenti di monitoraggio o debug validi.

Immettere la service mesh.

Con l'aumentare del numero dei servizi, crescono esponenzialmente anche le modalità potenziali di comunicazione. Due servizi hanno solo due percorsi di comunicazione. Tre servizi ne hanno sei, mentre 10 servizi ne hanno 90. Una service mesh fornisce un unico modo per configurare questi percorsi di comunicazione creando una politica per la comunicazione.

Una service mesh gestisce i servizi e indirizza il traffico delle comunicazioni secondo una configurazione predefinita. Ciò significa che invece di configurare un contenitore in esecuzione (o di scrivere il codice per farlo), un amministratore può fornire la configurazione alla service mesh, in modo che funzioni correttamente. Ciò in precedenza era necessario con i server web e la comunicazione service-to-service.

Il modo più comune per raggiungere questo obiettivo in un cluster è quello di utilizzare il modello sidecar. Un sidecar è un nuovo contenitore, all'interno del pod, che instrada e osserva il traffico delle comunicazioni tra servizi e contenitori.

IT flessibile, resiliente, sicura per il cloud ibrido - Contenitori, Kubernetes e Istio sono parte di una strategia di cloud ibrido aperta, che consente di creare e gestire carichi di lavoro ovunque.

Ulteriori informazioni


Istio e Kubernetes

Come accennato in precedenza, Istio è basato su Kubernetes e aggiunge contenitori sostanzialmente invisibili al programmatore e all'amministratore. Chiamati contenitori "sidecar", questi agiscono da "tramite", gestendo il traffico e monitorando le interazioni tra i componenti. I due lavorano in combinazione in tre modalità: configurazione, monitoraggio e gestione.

Configurazione

Il metodo principale per impostare la configurazione con Kubernetes è rappresentato dal comando kubectl, comunemente "kubectl -f", dove il file è un file YAML. Gli utenti Istio possono eseguire tipi di file YAML nuovi e differenti con kubectl oppure utilizzare il nuovo comando ioctl opzionale.

Monitoraggio

Con Istio puoi facilmente monitorare l'integrità delle tue applicazioni in esecuzione con Kubernetes. Gli strumenti di Istio permettono di gestire e visualizzare l'integrità delle applicazioni, fornendo più insight rispetto al semplice monitoraggio generale di cluster e nodi fornito da Kubernetes.

Gestione

Poiché l'interfaccia di Istio è essenzialmente la stessa di Kubernetes, per gestirla non sono richieste ulteriori competenze. Infatti, Istio consente all'utente di creare politiche che influenzano e gestiscono l'intero cluster Kubernetes, riducendo il tempo di gestione di ogni cluster ed eliminando al contempo la necessità di un codice di gestione personalizzato.

Prodotti in evidenza

Red Hat OpenShift on IBM Cloud

IBM Cloud Kubernetes Service

IBM Cloud Satellite


Vantaggi

I principali vantaggi di una service mesh includono funzionalità di debug migliorato, monitoraggio, instradamento, sicurezza e utilizzo efficace. Istio impiegherà quindi meno tempo per gestire un gruppo di servizi più ampio.

Debug migliorato

Diciamo, ad esempio, che un servizio abbia più dipendenze. Il servizio pay_claim di una compagnia di assicurazioni richiama il servizio deductible_amt, che richiama il servizio is_member_covered, e così via. Una catena di dipendenze complessa potrebbe avere 10 o 12 chiamate di servizi. In caso di errore di uno di questi 12 servizi, si verificherà una serie di errori a cascata che causerà un errore di tipo 500, 400 o forse di mancata risposta.

Per effettuare il debug di questa serie di chiamate, è possibile utilizzare una traccia di stack. Sul frontend, gli sviluppatori lato client possono visualizzare quali elementi vengono rifiutati dai server web, in quale ordine, ed esaminarli. I programmatori di frontend possono ottenere un diagramma a cascata per assistenza nel debug.

Quello che l'esempio non mostra è cosa succede nel data center, in che modo il callback=parselLotamaAudiences richiama altri quattro servizi Web e quali rispondono più lentamente. In seguito vedremo come Istio fornisca strumenti per tracciare le chiamate delle funzioni in un diagramma molto simile a questo.

Monitoraggio e osservabilità

I team DevOps e l'amministrazione IT possono avere la necessità di osservare il traffico per esaminare la latenza, il time-in-service, gli errori come percentuale di traffico e così via. Spesso necessitano di un dashboard. Un dashboard fornisce una visualizzazione della somma o della media dii quelle metriche nel tempo - a volte con la possibilità di eseguire il "drill down" ad uno specifico nodo, servizio o pod. Kubernetes non fornisce questa funzionalità in modo nativo.

Politica

Per impostazione predefinita, Kubernetes consente a ogni pod di inviare il traffico a ogni altro pod. Istio consente agli amministratori di creare una politica per limitare i servizi che possono interagire tra loro. Così, ad esempio, i servizi possono richiamare solo altri servizi con dipendenze reali. Un'altra politica per mantenere attivi i servizi è un limite di percentuale, che impedirà al traffico in eccesso di intasare un servizio ed eviterà gli attacchi DoS (Denial of Service).

Instradamento e bilanciamento del carico

Per impostazione predefinita, Kubernetes fornisce un bilanciamento del carico round-robin. Se sono disponibili sei pod che forniscono un microservizio, Kubernetes fornirà una funzione di bilanciamento del carico, o "servizio," che invia richieste a ogni pod in ordine crescente e ciclico. Ma, a volte, un'azienda implementerà diverse versioni dello stesso servizio in produzione.

L'esempio più semplice è la distribuzione blu/verde. In questo caso, il software potrebbe creare una versione completamente nuova dell'applicazione in produzione, senza indirizzare gli utenti di produzione a questa applicazione. Una volta promossa la nuova versione, l'azienda può mantenere i vecchi server in funzione per accelerare lo switchback in caso di errore.

Con Istio, questa operazione è semplice come utilizzare i tag in un file di configurazione. Gli amministratori possono anche utilizzare le etichette per indicare a quale tipo di servizio connettersi e creare regole in base alle intestazioni. Così, ad esempio, gli utenti beta possono essere instradati a un pod "canary" con la build migliore e più recente, mentre gli utenti regolari vanno alla build di produzione stabile.

Interruzione del circuito

Se un servizio è sovraccarico o indisponibile, le richieste aggiuntive avranno esito negativo e pur continuando a sovraccaricare il sistema. Poiché Istio tiene traccia di errori e ritardi, può forzare una pausa - consentendo il ripristino di un servizio - dopo un numero specifico di richieste impostato dalla politica. È possibile far rispettare questa politica in tutto il cluster, creando un piccolo file di testo e indicando a Istio di utilizzarlo come nuova politica.

Sicurezza

Istio fornisce identità, politica e crittografia per impostazione predefinita, oltre alle funzioni AAA (Authentication, Authorization, Audit - Autenticazione, Autorizzazione, Audit). Eventuali pod gestiti che comunicano tra loro utilizzeranno il traffico codificato, impedendo qualsiasi intrusione. Il servizio di identità, unito alla crittografia, assicura che nessun utente non autorizzato possa eseguire chiamate di servizio "fake" o "spoof". AAA fornisce ai professionisti della sicurezza e delle operazioni gli strumenti necessari per attività di monitoraggio meno sovraccariche.

Amministrazione semplificata

Le applicazioni tradizionali richiedono ancora le funzioni di identificazione, creazione delle politiche e sicurezza offerte da Istio. Per questo, programmatori e amministratori lavorano al livello di astrazione non corretto, reimplementando continuamente le stesse regole di sicurezza per ogni servizio. Istio permette di utilizzare le corrette politiche di impostazione dei livelli per il cluster attraverso un unico pannello di controllo. Allo stesso tempo, con il controllo accessi di Istio, i dashboard e gli strumenti di debug descritti di seguito, è possibile aggiungere facilmente un plugin nella riga comandi, invece di accedere a una pagina Web.


Esempi

Visualizza i servizi

Istio 1.1 include un nuovo componente aggiuntivo denominato Kiali che fornisce una visualizzazione basata sul Web. Puoi utilizzarlo per tenere traccia delle richieste di servizio, analizzare i dettagli o esportare la cronologia delle richieste di servizio in un file JSON, per eseguire query e formattazioni desiderate. Il grafico del carico di lavoro riportato di seguito offre un grafico delle dipendenze generato in tempo reale in base ai servizi che effettivamente dipendono uno dall'altro. Viene generato da effettive osservazioni del traffico.

Tieni traccia delle chiamate di servizio

Il servizio Jaeger, un componente di Istio, fornisce il tracciamento di qualsiasi servizio fornito. In questo esempio abbiamo tracciato la pagina del prodotto. Il tratteggio continuo nella prima immagine rappresenta una chiamata di servizio. Facendo clic su un punto, possiamo "eseguire il drill down" nel diagramma a cascata per seguire le esatte richieste e risposte dei servizi.

Possiamo anche osservare più nel dettaglio la pagina del prodotto. Possiamo vedere che gli errori sono presenti nella pagina stessa del prodotto, con i dettagli restituiti correttamente.

Dashboard

Istio è dotato di tanti dashboard (pronti all'uso) per monitorare l'integrità e le prestazioni del sistema. Questi dashboard possono misurare l'utilizzo della CPU e della memoria, la domanda di traffico, il numero di errori 400 e 500, i tempi di gestione delle richieste e così via. L'aspetto migliore è che questi dashboard sono disponibili semplicemente installando ed eseguendo Istio e aggiungendo Grafana, uno degli strumenti di dashboard open source inclusi per Istio. Istio fornisce inoltre due ulteriori dashboard: Kiali e Jaeger.

 


Tutorial di Istio

Il sito Web di Istio (link esterno a IBM) include una quantità notevole di documentazione e istruzioni utili per iniziare a utilizzare Istio. 


Istio e IBM Cloud

Una piattaforma di contenitori aziendale, basata su Kubernetes e tecnologie open source, come ad esempio Istio, fornisce orchestrazione in molteplici cloud pubblici e privati e unifica i tuoi ambienti per migliori prestazioni di business e operative. È un componente chiave di una strategia di cloud ibrido aperto, che consente di evitare il vincolo imposto dal vendor, creare ed eseguire carichi di lavoro ovunque con coerenza e ottimizzare e modernizzare tutti componenti della tua IT.

Intraprendi il passo successivo:

  • Implementa cluster Kubernetes completamente gestiti e ad elevata disponibilità con Red Hat OpenShift on Cloud IBM, un servizio gestito OpenShift che utilizza efficacemente la scalabilità e la sicurezza aziendale di IBM Cloud per automatizzare gli aggiornamenti, la scalabilità e il provisioning. Red Hat OpenShift on IBM Cloud include una funzionalità OpenShift Service Mesh che utilizza un piano di controllo Istio per controllare le connessioni tra servizi containerizzati, applicare politiche, osservare comportamenti e altro ancora.
  • Ottieni un migliore controllo delle tue applicazioni containerizzate con IBM Cloud Kubernetes Service, che fornisce installazione senza interruzione di Istio, aggiornamenti automatici e gestione del ciclo di vita dei componenti del piano di controllo e integrazione con strumenti di registrazione e monitoraggio della piattaforma.
  • Implementa ed esegui app in ambienti on-premise, di edge computing e cloud pubblico di qualsiasi vendor con IBM Cloud Satellite, una soluzione di cloud distribuito gestito
  • Semplifica e consolida tuoi data lake distribuendo senza interruzione storage aziendale abilitato per i container in ambienti on-premise e di cloud pubblico con  soluzioni di storage su cloud ibrido IBM
  • Semplifica la complessa gestione dell'IT ibrida con i servizi gestiti IBM Cloud.

Inizia oggi stesso con un  account IBM Cloud .


Soluzioni correlate

Red Hat OpenShift

Implementa cluster ad alta disponibilità e completamente gestiti con un semplice clic.


Servizio Kubernetes

Implementa cluster sicuri e ad elevata disponibilità in un'esperienza nativa Kubernetes.


Soluzioni Cloud Satellite

Crea le applicazioni velocemente, eseguile ovunque.


Soluzioni di storage su cloud ibrido

Semplifica e implementa senza soluzione di continuità lo storage aziendale abilitato ai container in ambienti di storage su cloud e on-premises.


Cloud Managed Services

Semplifica la complessa gestione dell'IT ibrida per una maggiore visibilità, gestibilità e flessibilità.


Soluzioni IBM Cloud

Ibrido. Aperto. Resiliente. La tua piattaforma e partner per la trasformazione digitale.