Cos'è Istio?

Pubblicato il 23 settembre 2021
Linee di codice binario verdi che si allontanano in un punto di fuga, formando una prospettiva a tunnel su uno sfondo nero

Che cos'è Istio

Istio è un mesh layer di servizi open source configurabile che connette, monitora e protegge i container in un cluster Kubernetes.

Al momento della scrittura, Istio funziona in modo nativo solo con Kubernetes, ma la sua natura open source consente a chiunque di scrivere estensioni che consentono l'esecuzione di Istio su qualsiasi software cluster. Oggi ci concentriamo sull'uso di Istio con Kubernetes, il suo caso d'uso più diffuso.

Kubernetes è uno strumento di orchestrazione dei container e un'unità centrale di Kubernetes è un nodo. Un nodo è composto da uno o più container, insieme a file system o altri componenti. Un'architettura di microservizi potrebbe avere una dozzina di nodi diversi, ognuno dei quali rappresenta diversi microservizi. Kubernetes gestisce la disponibilità e il consumo di risorse dei nodi, aggiungendo pod man mano che la domanda aumenta con il programma di scalatura automatica del pod. Istio aggiunge altri container nel pod per aggiungere sicurezza, gestione e monitoraggio.

Poiché è open source, Istio può essere eseguito su qualsiasi provider di cloud pubblico che lo supporti e su qualsiasi cloud privato con amministratori disponibili.

Il video riportato di seguito spiega meglio le nozioni di base di Istio:

Il mesh di servizi di rete

Quando le organizzazioni si spostano nei microservizi, devono supportare decine o centinaia di app specifiche. Gestire questi endpoint separatamente significa supportare numerose macchine virtuali o VM, inclusa la domanda. Un software cluster come Kubernetes può creare pod e scalarli, ma Kubernetes non fornisce un instradamento, regole di traffico, potenti strumenti di monitoraggio o debug.

Inserisci la mesh di servizi.

Con l’aumento del numero di servizi, il numero di potenziali modi di comunicare aumenta in modo esponenziale. Due servizi hanno solo due percorsi di comunicazione. Tre servizi ne hanno sei, mentre 10 servizi ne hanno 90. Un mesh di servizi fornisce un unico modo per configurare questi percorsi di comunicazione creando un criterio per la comunicazione.

Un mesh di servizi organizza i servizi e dirige il traffico delle comunicazioni secondo una configurazione predefinita. Significa che invece di configurare un container in esecuzione (o scrivere un codice per farlo), un amministratore può fornire la configurazione al service mesh e lasciargli completare il lavoro. Questo accadeva sempre con i server Web e la comunicazione service-to-service.

Il modo più comune per farlo in un cluster è usare il modello sidecar. Un sidecar è un nuovo container all'interno del pod che instrada e osserva il traffico delle comunicazioni tra servizi e container.

Istio e Kubernetes

Come accennato in precedenza, Istio si sovrappone a Kubernetes, aggiungendo container invisibili al programmatore e all'amministratore. Chiamati container sidecar, questi agiscono come una persona che sta in mezzo, dirigendo il traffico e monitorando le interazioni tra i componenti. I due lavorano in combinazione in tre modi: configurazione, monitoraggio e gestione.

Configurazione

Il metodo principale per impostare la configurazione con Kubernetes è il comando kubectl, comunemente "kubectl -f <filename>" in cui il file è un file YAML. Gli utenti Istio possono eseguire nuovi e diversi tipi di file YAML con kubectl oppure usare il nuovo comando ioctl opzionale.

Monitoraggio

Con Istio, puoi monitorare facilmente lo stato di salute delle tue app in esecuzione con Kubernetes. Gli strumenti di Istio possono gestire e visualizzare lo stato di salute delle applicazioni, offrendo insight più dettagliati rispetto al semplice monitoraggio generale dei cluster e dei nodi fornito da Kubernetes.

Gestione

Dal momento che l'interfaccia di Istio è fondamentalmente la stessa di Kubernetes, gestirla non richiede quasi nessun lavoro aggiuntivo. In effetti, Istio consente all'utente di creare politiche che influiscono e gestiscono l'intero cluster Kubernetes, riducendo i tempi di gestione di ciascun cluster eliminando la necessità di un codice di gestione personalizzato.

IBM DevOps

Cos'è DevOps?

Andrea Crawford spiega cos'è DevOps, il suo valore e in che modo le pratiche e gli strumenti DevOps ti aiutano a spostare le tue app nell'intera delivery pipeline, dall'ideazione alla produzione. Guidato dai principali leader di pensiero IBM, il curriculum è progettato con lo scopo di aiutare i leader aziendali ad acquisire le conoscenze necessarie per dare priorità agli investimenti nell'AI che possono promuovere la crescita.

Benefici di Istio

I principali benefici di un service mesh includono le funzionalità per migliorare il debug, il monitoraggio, l'instradamento, la sicurezza e l'uso. Vale a dire, con Istio, serve meno impegno per gestire un gruppo più ampio di servizi.

Debugging migliorato

Supponiamo, ad esempio, che un servizio abbia più dipendenze. Il servizio pay_claim di una compagnia assicurativa richiama il servizio deductible_amt, che richiama il servizio is_member_covered e così via. Una catena di dipendenze complessa può avere 10 o 12 chiamate al servizio. Quando una di queste 12 chiamate non avviene, si verificherà una serie di guasti a cascata che si tradurranno in una sorta di errore 500, 400 o, forse, nell'assenza di una risposta.

Per eseguire il debug di quel set di chiamate, puoi usare qualcosa come uno stack trace. Sul front-end, gli sviluppatori lato client possono vedere quali elementi vengono estratti dai server Web, in quale ordine ed esaminarli. I programmatori front-end possono ottenere un diagramma a cascata per facilitare il debug.

Quello che l'esempio non mostra è quello che accade all'interno del data center: il modo in cui callback=parsellotamaAudiences chiama altri quattro servizi Web e quali rispondono più lentamente. Più avanti vedremo in che modo Istio fornisce strumenti per tracciare le chiamate di funzione in un diagramma molto simile a questo.

Monitoraggio e observability

I team DevOps e l'amministrazione IT potrebbero voler osservare il traffico per vedere latenza, time-in-service, errori come percentuale del traffico e così via. Spesso vogliono vedere una dashboard. Una dashboard fornisce una visualizzazione della somma, o media, o di tali metriche nel tempo, magari con la possibilità di approfondire un nodo, servizio o pod specifico. Kubernetes non fornisce queste funzioni in modo nativo.

Policy

Per impostazione predefinita, Kubernetes consente a ogni pod di inviare traffico a tutti gli altri pod. Istio consente agli amministratori di creare una policy per limitare i servizi che possono funzionare tra loro. Quindi, ad esempio, i servizi possono chiamare solo altri servizi che sono vere dipendenze. Un'altra policy per mantenere attivi i servizi è un limite di velocità, che impedirà al traffico in eccesso di intasare un servizio e prevenire gli attacchi denial-of-service.

Instradamento e bilanciamento del carico

Per impostazione predefinita, Kubernetes fornisce un bilanciamento del carico round-robin. Se sono presenti sei pod che forniscono un microservizio, Kubernetes fornirà un bilanciatore del carico, o un servizio che invia le richieste a ciascun pod in ordine crescente e poi ricomincia da capo. Tuttavia, a volte un'azienda distribuisce versioni diverse dello stesso servizio in produzione.

L'esempio più semplice potrebbe essere una distribuzione blu o verde. In tal caso, il software potrebbe creare una versione completamente nuova dell'applicazione in produzione senza inviare utenti di produzione ad essa. Dopo aver promosso la nuova versione, l'azienda può mantenere i vecchi server per rendere rapido il passaggio in caso di guasto.

Con Istio, è semplice come usare i tag in un file di configurazione. Gli amministratori possono inoltre utilizzare le etichette per indicare a quale tipo di servizio connettersi e creare regole in base alle intestazioni. Ad esempio, gli utenti beta possono passare a un pod canary con la build più recente e migliore, mentre gli utenti regolari possono passare alla build di produzione stabile.

Interruzione di circuito

Se un servizio è sovraccarico o inattivo, altre richieste non hanno esisto positivo pur continuando a sovraccaricare il sistema. Dal momento che Istio tiene traccia degli errori e dei ritardi, può forzare una pausa, consentendo a un servizio di riprendersi, dopo un numero specifico di richieste impostato dalla policy. Puoi applicare questa policy all'intero cluster creando un piccolo file di testo e indicando a Istio di usarlo come nuova policy.

Sicurezza

Per impostazione predefinita, Istio fornisce identità, policy e crittografia, insieme all'autenticazione, all'autorizzazione e alla verifica (AAA). Tutti i pod in gestione che comunicano con altri usano traffico crittografato, impedendo qualsiasi osservazione. Il servizio di identità, combinato con la crittografia, aiuta a garantire che nessun utente non autorizzato possa falsificare o "spoofare" una chiamata di servizio. AAA fornisce ai professionisti della sicurezza e delle operazioni gli strumenti necessari per il monitoraggio, con meno spese generali.

Amministrazione semplificata

Le applicazioni tradizionali necessitano ancora delle caratteristiche di identità, policy e sicurezza offerte da Istio. Questo fa sì che i programmatori e gli amministratori lavorino al livello sbagliato di astrazione, reimplementando le stesse regole di sicurezza più e più volte per ogni servizio. Istio consente loro di lavorare al livello giusto, impostando le policy per il cluster tramite un unico pannello di controllo.

Soluzioni correlate
IBM Instana Observability

Sfrutta la potenza dell'AI e dell'automazione per risolvere in modo proattivo i problemi in tutto lo stack di applicazioni.

Esplora IBM Instana Observability
Soluzioni DevOps

Utilizza il software e gli strumenti DevOps per creare, implementare e gestire app cloud-native su più dispositivi e ambienti.

Esplora le soluzioni DevOps
Servizi di consulenza cloud

Accelera l'agilità e la crescita della tua azienda. Modernizza costantemente le applicazioni su tutte le tue piattaforme usufruendo dei nostri servizi di consulenza per il cloud.

Esplora i servizi di consulenza cloud
Fasi successive

Dal rilevamento proattivo dei problemi con IBM Instana alle analisi in tempo reale su tutto il tuo stack, puoi mantenere le applicazioni cloud-native in esecuzione in modo affidabile.

  1. Scopri IBM Instana
  2. Esplora le soluzioni DevOps