Articoli

Istio Service Mesh: Sidecar o Sidecar-less per la tua architettura a microservizi?

Nel panorama sempre più complesso delle architetture a microservizi, garantire una comunicazione sicura, affidabile e osservabile tra i diversi componenti rappresenta una sfida fondamentale. I service mesh sono emersi come soluzione a questa problematica, offrendo un layer infrastrutturale dedicato alla gestione del traffico di rete. Tra questi, Istio si è affermato come uno dei progetti più maturi e adottati nel settore.

Contattaci subito e senza impegno per implementare il service mesh nella tua infrastruttura.

Cos’è Istio?

Istio è un service mesh open source progettato per connettere, proteggere, controllare e osservare i microservizi. Sviluppato inizialmente da Google, IBM e Lyft nel 2017, Istio è ora un progetto CNCF graduated, che testimonia la sua maturità e adozione diffusa.

L’obiettivo principale di Istio è fornire un modo per gestire la comunicazione tra servizi indipendentemente dal codice dell’applicazione. Questo permette di implementare funzionalità critiche come:

  • Sicurezza: autenticazione e autorizzazione mTLS (mutual TLS);
  • Osservabilità: metriche, tracciamento distribuito e logging;
  • Affidabilità: retry, timeout e circuit breaking;
  • Routing avanzato: traffic splitting, A/B testing e canary deployment.

L’unicità di Istio risiede nella sua capacità di fornire queste funzionalità in modo trasparente per le applicazioni, senza richiedere modifiche al codice.

Contattaci subito e senza impegno per assistenza e consulenza su Istio.

Il Pattern Sidecar in Istio

Il cuore dell’architettura tradizionale di Istio è il pattern sidecar. Ma cos’è esattamente un sidecar nel contesto di Istio?

Il sidecar è un container aggiuntivo che viene distribuito insieme al container principale dell’applicazione all’interno dello stesso pod Kubernetes. Questo container, basato sul proxy Envoy, intercetta tutto il traffico in entrata e in uscita dal container dell’applicazione.

Questo approccio basato su sidecar offre numerosi vantaggi:

  • Disaccoppiamento: separa la logica di rete dalla logica di business;
  • Granularità: fornisce controllo a livello di singolo pod;
  • Sicurezza: garantisce l’isolamento e la cifratura end-to-end;
  • Flessibilità: permette configurazioni specifiche per servizio.

Ma, nonostante i suoi evidenti vantaggi, il pattern sidecar presenta alcune sfide significative negli scenari moderni che ne possono limitarne l’adozione, in particolare:

  • Trasparenza limitata: l’iniezione del sidecar richiede il riavvio dell’applicazione e comporta un overhead in termini di risorse CPU e memoria. Inoltre, è necessario gestire la sequenza di avvio e arresto tra il container dell’applicazione e il sidecar.
  • Adozione incrementale difficile: l’approccio sidecar è sostanzialmente “tutto o niente”: una volta iniettato il sidecar, questo gestisce tutte le funzionalità del service mesh, indipendentemente da quali siano effettivamente necessarie per l’applicazione specifica.
  • Eventuali problematiche di sicurezza: poiché il sidecar Envoy elabora tutto il traffico, inclusa l’elaborazione del layer 7 (HTTP), è esposto a potenziali vulnerabilità legate all’elaborazione di protocolli complessi.

Contattaci subito e senza impegno per assistenza e consulenza su Istio.

Istio Ambient: l’evoluzione Sidecar-less

Per affrontare queste sfide, nel settembre 2022 è stata introdotta una nuova modalità operativa chiamata Istio Ambient, che offre un’architettura senza sidecar a due livelli:

  1. Zero-Trust Tunnel (ztunnel): un componente che opera come agente a livello di nodo (simile a un DaemonSet di Kubernetes), fornendo funzionalità di base:
    • Identità per le applicazioni;
    • Mutuo TLS (mTLS);
    • Telemetria a livello TCP;
    • Policy enforcement di base.
  2. Waypoint Proxy (opzionale): un proxy basato su Envoy che fornisce funzionalità avanzate di layer 7:
    • Routing HTTP complesso;
    • Autorizzazioni basate su header;
    • Metriche HTTP dettagliate;
    • Tracing distribuito.

Questa separazione permette di implementare solo le funzionalità necessarie per ciascuna applicazione, riducendo l’overhead complessivo. L’approccio Ambient offre significativi vantaggi:

  • Operazioni semplificate: non è necessario riavviare le applicazioni per aggiungere o rimuovere funzionalità del service mesh;
  • Costi ridotti: il consumo di risorse è notevolmente inferiore rispetto all’approccio sidecar;
  • Performance migliorate: la separazione delle responsabilità porta a un’elaborazione più efficiente;
  • Maggiore sicurezza: le applicazioni sono isolate dal processing del layer 7 se non necessario.

In poche parole aggiungendo un layer si ottiene maggiore flessibilità e si ottimizzano le risorse.

Contattaci subito e senza impegno per assistenza e consulenza su Istio.

Quando Scegliere Sidecar o Sidecar-Less?

La scelta tra l’approccio tradizionale con sidecar e quello senza sidecar dipende da diversi fattori ma noi ci sentiamo di affermare che occorre propendere per l’adozione dell’approccio con Ambient laddove lo scenario preveda, come fondamentali, la semplicità operativa e la necessità di adozione incrementale del service mesh oltre ad una granularità in termini di sicurezza. Laddove invece si hanno chiare le specifiche di routing e resilienza e si voglia “blindare” la configurazione lato client, l’approccio tradizionale con sidecar diventa ideale.

Glue Labs e Istio

Abbiamo adottato tecnologie come Kubernetes e Istio dalla loro nascita ed abbiamo sviluppato numerose architetture ed applicazioni totalmente Cloud Native. Grazie alle competenze specialistiche maturate in tantissimi settori e con numerosi Clienti ti permettiamo di ottenere soluzioni integrate, efficiente e sicure  con garanzia 12 mesi da qualsiasi bug. 

Contattaci subito e senza impegno per maggiori informazioni.