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:
Leggi l'e-book (1,4 MB)
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.
Ulteriori informazioni
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.
Red Hat OpenShift on IBM Cloud
IBM Cloud Kubernetes Service
IBM Cloud Satellite
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.
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.
Il sito Web di Istio (link esterno a IBM) include una quantità notevole di documentazione e istruzioni utili per iniziare a utilizzare Istio.
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:
Inizia oggi stesso con un account IBM Cloud .
Implementa cluster ad alta disponibilità e completamente gestiti con un semplice clic.
Implementa cluster sicuri e ad elevata disponibilità in un'esperienza nativa Kubernetes.
Crea le applicazioni velocemente, eseguile ovunque.
Semplifica e implementa senza soluzione di continuità lo storage aziendale abilitato ai container in ambienti di storage su cloud e on-premises.
Semplifica la complessa gestione dell'IT ibrida per una maggiore visibilità, gestibilità e flessibilità.
Ibrido. Aperto. Resiliente. La tua piattaforma e partner per la trasformazione digitale.