Abilita Oracle Cloud Infrastructure Service Mesh nelle tue applicazioni Kubernetes

I clienti di Oracle Cloud Infrastructure (OCI) si sono sempre più spostati verso un'architettura di microservizi che, insieme ai suoi vantaggi, comporta anche nuove sfide. In un'architettura di microservizi, le applicazioni monolitiche sono suddivise in microservizi più piccoli che comunicano tramite la rete utilizzando un'API. Ciò causa un aumento del traffico di rete e aumenta la complessità e la superficie di attacco complessiva nell'architettura.

L'aggiunta di un mesh di servizio ai microservizi allevia molte delle sfide introdotte con un'architettura di microservizi e offre i seguenti vantaggi:
  • Consente di controllare il flusso di traffico dei microservizi.
  • Fornisce visibilità sulle applicazioni.
  • Consente ai microservizi di connettersi in modo sicuro senza apportare modifiche al codice dell'applicazione.
Con OCI Service Mesh, puoi distribuire un'architettura mesh di servizi gestiti nei tuoi cluster Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine o OKE). Questa architettura di riferimento fornisce un esempio dettagliato di architettura OCI Service Mesh distribuita in un cluster OKE.

Funzionalità di OCI Service Mesh

Sicurezza
  • Applicazione dei criteri relativi alla sicurezza

    OCI Service Mesh utilizza i criteri di accesso per definire le regole di accesso. I criteri di accesso applicano la comunicazione tra microservizi e consentono solo le richieste convalidate che hanno origine all'interno e all'esterno dell'applicazione. I criteri di accesso vengono utilizzati anche per definire la comunicazione consentita ai servizi esterni.

  • Zero trust

    OCI Service Mesh implementa automaticamente un'architettura di sicurezza zero-trust in tutti i microservizi. I dati tra i microservizi vengono cifrati. L'identificazione da microservizi a microservizi è richiesta all'inizio della comunicazione. Le due parti devono scambiare le credenziali con le loro informazioni di identità. Ciò consente ai servizi di identificarsi a vicenda per determinare se sono autorizzati a interagire. Questa soluzione viene implementata con TLS reciproco con certificato automatico e rotazione delle chiavi utilizzando il servizio Oracle Cloud Infrastructure Certificates (OCI Certificates) e Oracle Key Management Cloud Service per gestire certificati e chiavi.

Gestione traffico
  • Traffic Shifting

    OCI Service Mesh ti consente di eseguire distribuzioni canary. Quando pubblichi una nuova versione del codice in produzione, consenti solo a una parte del traffico di raggiungerlo. Questa funzione consente di eseguire la distribuzione in modo rapido e provoca il minimo disturbo per l'applicazione. È possibile definire regole di instradamento che regolano tutte le comunicazioni tra microservizi all'interno della mesh. È possibile instradare una parte del traffico a una determinata versione del servizio.

Osservabilità
  • Monitoraggio e registrazione

    OCI Service Mesh si trova in una posizione unica per fornire informazioni di telemetria poiché tutte le comunicazioni tra microservizi devono attraversarle. Ciò consente al mesh del servizio di acquisire dati di telemetria quali origine, destinazione, protocollo, URL, durata, codice di stato, latenza, log e altre statistiche dettagliate. È possibile esportare le informazioni di log nel servizio Oracle Cloud Infrastructure Logging (OCI Logging). OCI Service Mesh fornisce due tipi di log: log degli errori e log del traffico. È possibile utilizzare questi log per eseguire il debug di 404 o 505 problemi o generare statistiche basate sui log. I dati delle metriche e della telemetria possono essere esportati in Prometheus e visualizzati con Grafana. Entrambi possono essere distribuiti direttamente in un cluster OKE.

Architettura

Oracle Cloud Infrastructure Service Mesh (OCI Service Mesh) utilizza un modello sidecar. Questa architettura incapsula il codice che implementa la funzionalità di rete in un proxy di rete e quindi si basa sul traffico da e verso i servizi da reindirizzare nel proxy sidecar. Si chiama sidecar perché un proxy è collegato ad ogni applicazione, proprio come una sidecar collegata a una moto. In OKE, il contenitore dell'applicazione si trova accanto al contenitore sidecar proxy nello stesso pod. Poiché si trovano nello stesso pod, condividono lo stesso spazio di nomi di rete e lo stesso indirizzo IP, consentendo ai container di comunicare tramite "localhost".

OCI Service Mesh include i due componenti principali riportati di seguito.
  • Piano di controllo

    Il piano di controllo OCI Service Mesh gestisce e configura l'intera raccolta di proxy per instradare il traffico. Gestisce l'inoltro, il controllo dello stato, il bilanciamento del carico, l'autenticazione, l'autorizzazione e l'aggregazione della telemetria. Il piano di controllo interagisce con il servizio di certificazione OCI e il servizio di gestione delle chiavi OCI per fornire a ogni proxy il proprio certificato.

  • Piano di dati

    Il piano dati è composto dalla raccolta di proxy sidecar distribuiti nell'ambiente ed è responsabile della sicurezza, delle funzioni di rete e dell'osservabilità dell'applicazione. Inoltre, raccolgono e segnalano la telemetria su tutto il traffico mesh. Il proxy Envoy viene utilizzato per il piano dati di OCI Service Mesh.

Il seguente diagramma illustra questa architettura di riferimento.



oci_service_mesh_oke_arch-oracle.zip

Questa architettura di riferimento mostra un'applicazione distribuita in un cluster OKE con tre servizi. Lo spazio di nomi in cui l'applicazione viene distribuita è stato "meshificato". Uno spazio di nomi "meshified" indica che i servizi distribuiti all'interno dello spazio di nomi faranno parte di un mesh di servizio e ogni nuovo pod distribuito verrà inserito con un container proxy inviato. Quando ogni pod viene distribuito, le configurazioni e i certificati vengono inviati a ciascuno dei container proxy dal piano di controllo OCI Service Mesh. Il piano di controllo OCI Service Mesh comunica con il servizio Certificati OCI e Oracle Key Management Cloud Service per ottenere i certificati per ogni proxy.

Viene distribuito un gateway in entrata per fornire l'accesso esterno all'applicazione. Il gateway in entrata fa parte del piano dati OCI Service Mesh ed è anche un proxy di invio che riceve configurazione e certificati dal piano di controllo OCI Service Mesh.

È responsabilità del contenitore proxy eseguire la ricerca automatica del servizio, la cifratura del traffico e l'autenticazione con il servizio di destinazione. I contenitori proxy applicano anche criteri di rete, ad esempio il modo in cui il traffico viene distribuito tra diverse versioni del servizio e applicano i criteri di accesso. Il gateway in entrata esegue la stessa funzione per il traffico esterno al mesh di servizio.

Prometheus e Grafana vengono distribuiti all'interno del cluster OKE in uno spazio di nomi separato che non fa parte del mesh di servizio. Il piano dati mesh del servizio invia alla distribuzione Prometheus statistiche operative chiave quali latenza, errori, richieste e telemetria. Grafana estrae i dati dalla distribuzione Prometheus, che può essere utilizzata per creare dashboard per la visualizzazione.

OCI Service Mesh è integrato con il servizio di log OCI e il log può essere abilitato quando viene creato il mesh di servizio. OCI Service Mesh fornisce due tipi di log: log degli errori e log del traffico. Questi log possono essere utilizzati per eseguire il debug di 404 o 505 problemi o per generare statistiche basate sui log.

Questa architettura dispone dei seguenti servizi OCI:

  • OCI Kubernetes Engine (OKE)

    Offre un cluster Kubernetes altamente disponibile e scalabile pronto per la produzione per distribuire le applicazioni containerizzate nel cloud.

  • Load balancer

    Fornisce l'accesso al gateway in entrata nel cluster OKE. L'ingresso indirizza il traffico ai servizi richiesti nel cluster OKE.

  • Autorità di certificazione

    Gestisce i certificati TLS per il servizio OCI Service Mesh.

  • Gestione chiavi

    Gestisce le chiavi utilizzate dal servizio Certificate Authority.

L'architettura presenta i seguenti componenti:

  • Area

    Un'area geografica Oracle Cloud Infrastructure è un'area geografica localizzata che contiene uno o più data center, denominati domini di disponibilità. Le regioni sono indipendenti da altre regioni e grandi distanze possono separarle (tra paesi o addirittura continenti).

  • Rete cloud virtuale (VCN) e subnet

    Una VCN è una rete personalizzabile e definita dal software configurata in un'area Oracle Cloud Infrastructure. Come le tradizionali reti di data center, le reti VCN consentono di controllare l'ambiente di rete. Una VCN può avere più blocchi CIDR non sovrapposti che è possibile modificare dopo aver creato la VCN. Puoi segmentare una VCN in subnet, che possono essere definite in un'area o in un dominio di disponibilità. Ogni subnet è costituita da un intervallo contiguo di indirizzi che non si sovrappongono alle altre subnet nella VCN. È possibile modificare le dimensioni di una subnet dopo la creazione. Una subnet può essere pubblica o privata.

  • Lista di sicurezza

    Per ogni subnet, puoi creare regole di sicurezza che specificano l'origine, la destinazione e il tipo di traffico che devono essere consentiti all'interno e all'esterno della subnet.

Risorse OCI Service Mesh

Quando si configura OCI Service Mesh distribuito in un cluster OKE, vengono definite diverse risorse Kubernetes che vengono mappate ai componenti chiave dell'applicazione.

Il diagramma riportato di seguito descrive il modo in cui le risorse Mesh di servizio OCI configurate: Criteri di accesso, Gateway in entrata, Servizio virtuale e Distribuzione virtuale vengono mappate alle risorse dell'applicazione: K8s Service, K8s Service Load Balancer, Distribuzioni e Pod.


Segue la descrizione di oci_service_mesh_oke_config.png
Descrizione dell'immagine oci_service_mesh_oke_config.png

Suggerimenti

Utilizzare i seguenti suggerimenti come punto di partenza. I requisiti dell'utente potrebbero essere diversi dall'architettura descritta qui.
  • VCN

    Quando crei una VCN, determina il numero di blocchi CIDR necessari e la dimensione di ciascun blocco in base al numero di risorse che intendi collegare alle subnet nella VCN. Utilizzare i blocchi CIDR all'interno dello spazio di indirizzi IP privati standard.

    Selezionare i blocchi CIDR che non si sovrappongono a qualsiasi altra rete (in Oracle Cloud Infrastructure, nel data center on premise o in un altro provider cloud) a cui si intende impostare connessioni private.

    Dopo aver creato una VCN, puoi modificarne, aggiungerne e rimuoverne i blocchi CIDR.

    Quando si progettano le subnet, considerare il flusso di traffico e i requisiti di sicurezza. Collega tutte le risorse all'interno di un livello o ruolo specifico alla stessa subnet, che può fungere da limite di sicurezza.

  • Larghezza di banda del load balancer

    Durante la creazione del load balancer, puoi selezionare una forma predefinita che fornisca una larghezza di banda fissa oppure specificare una forma personalizzata (flessibile) in cui impostare un intervallo di larghezza di banda e consentire al servizio di ridimensionare automaticamente la larghezza di banda in base ai pattern di traffico. Con entrambi gli approcci, puoi modificare la forma in qualsiasi momento dopo aver creato il load balancer.

Considerazioni

Quando si distribuisce questa architettura di riferimento, considerare le seguenti opzioni.

  • Costo

    Non è previsto alcun addebito per il piano di controllo di OCI Service Mesh nel cluster OKE. Ai clienti viene addebitato il costo per l'utilizzo delle risorse dei contenitori proxy per il piano dati Mesh di servizio. In pratica, tuttavia, i clienti stanno già pagando le risorse per il pool di nodi in un cluster OKE e, a meno che l'utilizzo dei container proxy non spinga l'utilizzo del pool di nodi oltre il 100%, non è previsto alcun costo aggiuntivo per l'aggiunta di OCI Service Mesh all'architettura dei microservizi.

  • Disponibilità

    Il piano di controllo di OCI Service Mesh viene sempre distribuito con alta disponibilità.

conferme

  • Author: Chiping Hwang
  • Contributors: Dusko Vukmanovic, Anupama Pundpal