Panoramica di Cloud Service Mesh

Questo documento è rivolto agli amministratori di rete e ai proprietari di servizi che vogliono familiarizzare con Cloud Service Mesh e le sue funzionalità. Si tratta di un documento precedente che si applica alle configurazioni che utilizzano le API di bilanciamento del carico.

Cloud Service Mesh è un piano di controllo gestito per la rete di applicazioni. Cloud Service Mesh ti consente di offrire servizi globali e altamente disponibili con funzionalità di networking delle applicazioni avanzate come la gestione del traffico e l'osservabilità.

Man mano che il numero di servizi e microservizi nel tuo deployment aumenta, solitamente inizi a riscontrare problemi comuni di networking delle applicazioni, ad esempio:

  • Come faccio a rendere resilienti i miei servizi?
  • Come faccio a indirizzare il traffico verso i miei servizi e come fanno i servizi a conoscersi e comunicare tra loro?
  • Come faccio a capire cosa succede quando i miei servizi comunicano tra loro?
  • Come faccio ad aggiornare i miei servizi senza rischiare un'interruzione del servizio?
  • Come faccio a gestire l'infrastruttura che rende possibile il mio deployment?
I servizi devono comunicare tra loro.
I servizi devono comunicare tra loro (fai clic per ingrandire)

Cloud Service Mesh ti aiuta a risolvere questi tipi di problemi in un deployment basato su servizi moderno. Cloud Service Mesh si basa sull'infrastruttura gestita da Google Cloud, quindi non devi gestire la tua infrastruttura. Puoi concentrarti sull'invio del codice dell'applicazione che risolve i problemi della tua attività, lasciando che Cloud Service Mesh gestisca le complessità di rete dell'applicazione.

Cloud Service Mesh

Un pattern comune per risolvere i problemi di networking delle applicazioni è l'utilizzo di un mesh di servizi. Cloud Service Mesh supporta mesh di servizi e altri schemi di deployment in base alle tue esigenze.

Un tipico mesh di servizi.
Un tipico mesh di servizi (fai clic per ingrandire)

In un tipico mesh di servizi, vale quanto segue:

  • Esegui il deployment dei servizi in un cluster Kubernetes.
  • Ciascun pod dei servizi ha un proxy dedicato (di solito Envoy) in esecuzione come proxy del file collaterale.
  • Ogni proxy sidecar comunica con l'infrastruttura di rete (un piano di controllo) installata nel cluster. Il piano di controllo indica ai proxy sidecar i servizi, gli endpoint e i criteri nel tuo mesh di servizi.
  • Quando un pod invia o riceve una richiesta, questa viene inviata al proxy sidecar del pod. Il proxy sidecar gestisce la richiesta, ad esempio inviandola alla destinazione prevista.

Nei diagrammi di questo documento e in altri documenti di Cloud Service Mesh, le icone rosa a sei lati rappresentano i proxy. Il piano di controllo è collegato a ogni proxy e fornisce le informazioni necessarie per gestire le richieste. Le frecce tra le caselle mostrano i flussi di traffico. Ad esempio, il codice dell'applicazione in Service A invia una richiesta. Il proxy gestisce la richiesta e la inoltra a Service B.

Questo modello ti consente di spostare la logica di networking dal codice dell'applicazione. Puoi concentrarti sulla generazione di valore aziendale lasciando che sia l'infrastruttura a occuparsi della rete di applicazioni.

Differenze di Cloud Service Mesh

Cloud Service Mesh funziona in modo simile a questo modello, ma è diverso in modi importanti. Tutto inizia dal fatto che Cloud Service Mesh è un servizio gestito da Google Cloud. Non devi installarlo, non viene eseguito nel cluster e non devi occuparti della manutenzione.

Nel seguente diagramma, Cloud Service Mesh è il piano di controllo. Questo cluster Kubernetes contiene quattro servizi, ciascuno con proxy sidecar collegati a Cloud Service Mesh. Cloud Service Mesh fornisce le informazioni di cui i proxy hanno bisogno per instradare le richieste. Ad esempio, il codice dell'applicazione su un pod appartenente a Service A invia una richiesta. Il proxy sidecar in esecuzione accanto a questo pod gestisce la richiesta e la inoltra a un pod che appartiene a Service B.

Un esempio di mesh di servizi con Cloud Service Mesh.
Un esempio di mesh di servizi con Cloud Service Mesh (fai clic per ingrandire)

Oltre il mesh di servizi

Cloud Service Mesh supporta più tipi di implementazioni rispetto a un tipico mesh di servizi.

Kubernetes multicluster

Con Cloud Service Mesh, puoi usufruire di un networking delle applicazioni che funziona su più cluster Kubernetes. Nel seguente diagramma, Cloud Service Mesh fornisce il control plane per i cluster Kubernetes in us-central1 e europe-west1. Le richieste possono essere inoltrate tra i tre servizi in us-central1, tra i due servizi in europe-west1 e tra i servizi nei due cluster.

Un esempio di Kubernetes multi-cluster con Cloud Service Mesh.
Un esempio di Kubernetes multi-cluster con Cloud Service Mesh (fai clic per ingrandire)

La tua mesh di servizi può estendersi su più cluster Kubernetes in più regioni Google Cloud. I servizi di un cluster possono comunicare con i servizi di un altro cluster. Puoi anche avere servizi costituiti da pod in più cluster.

Con il bilanciamento del carico globale basato sulla prossimità di Cloud Service Mesh, le richieste destinate a Service B vengono inviate al pod più vicino in grado di soddisfare la richiesta. Puoi anche usufruire di un failover senza interruzioni: se un pod non è attivo, la richiesta viene eseguita automaticamente su un altro pod che può gestirla, anche se si trova in un cluster Kubernetes diverso.

Macchine virtuali

Kubernetes sta diventando sempre più popolare, ma molti carichi di lavoro vengono dipiazzati su istanze di macchine virtuali (VM). Cloud Service Mesh risolve il networking delle applicazioni anche per questi carichi di lavoro. I carichi di lavoro basati su VM interoperano con i carichi di lavoro basati su Kubernetes.

Nel seguente diagramma, il traffico entra nel deployment tramite il bilanciatore del carico delle applicazioni esterno. Viene indirizzato a Service A nel cluster Kubernetes in asia-southeast1 e a Service D su una VM in europe-west1.

Un esempio di VM e Kubernetes con Cloud Service Mesh.
Un esempio di VM e Kubernetes con Cloud Service Mesh (fai clic per ingrandire)

Google fornisce un meccanismo semplice per configurare i carichi di lavoro basati su VM con Cloud Service Mesh. Devi solo aggiungere un flag al modello di istanza VM di Compute Engine e Google gestirà la configurazione dell'infrastruttura. Questa configurazione include l'installazione e la configurazione dei proxy che offrono funzionalità di networking delle applicazioni.

gRPC senza proxy

gRPC è un framework RPC open source ricco di funzionalità che puoi utilizzare per scrivere microservizi ad alte prestazioni. Con Cloud Service Mesh, puoi portare le funzionalità di networking delle applicazioni (come Service Discovery, il bilanciamento del carico e la gestione del traffico) alle tue applicazioni gRPC. Per ulteriori informazioni, consulta Cloud Service Mesh e gRPC: servizi senza proxy per il tuo mesh di servizi.

Nel seguente diagramma, le applicazioni gRPC indirizzano il traffico ai servizi basati su cluster Kubernetes in una regione e ai servizi in esecuzione su VM in regioni diverse. Due dei servizi includono proxy sidecar, mentre gli altri sono senza proxy.

Un esempio di applicazioni gRPC senza proxy con Cloud Service Mesh.
Un esempio di applicazioni gRPC senza proxy con Cloud Service Mesh (fai clic per ingrandire)

Cloud Service Mesh supporta i servizi gRPC proxyless. Questi servizi utilizzano una versione recente della libreria gRPC open source che supporta le API xDS. Le applicazioni gRPC possono connettersi a Cloud Service Mesh utilizzando le stesse API xDS utilizzate da Envoy.

Una volta connesse le applicazioni, la libreria gRPC si occupa delle funzioni di networking delle applicazioni, come Service Discovery, il bilanciamento del carico e la gestione del traffico. Queste funzioni vengono eseguite in modo nativo in gRPC, pertanto i proxy dei servizi non sono richiesti, motivo per cui sono chiamate applicazioni gRPC senza proxy.

Ingress e gateway

Per molti casi d'uso, devi gestire il traffico proveniente da client che non sono configurati da Cloud Service Mesh. Ad esempio, potresti dover inviare il traffico internet pubblico ai tuoi microservizi. Potresti anche configurare un bilanciatore del carico come proxy inverso che gestisce il traffico da un client prima di inviarlo a una destinazione.

Nel seguente diagramma, un bilanciatore del carico delle applicazioni esterno abilita l'ingresso per i client esterni, con il traffico instradato ai servizi in un cluster Kubernetes. Un bilanciatore del carico delle applicazioni interno instrada il traffico interno al servizio in esecuzione sulla VM.

Cloud Service Mesh con Cloud Load Balancing per l'ingresso.
Cloud Service Mesh con Cloud Load Balancing per l'ingresso (fai clic per ingrandire)

Cloud Service Mesh funziona con Cloud Load Balancing per offrire un'esperienza di ingresso gestita. Configura un bilanciatore del carico esterno o interno, quindi configuralo in modo che invii il traffico ai tuoi microservizi. Nel diagramma precedente, i client internet pubblici raggiungono i tuoi servizi tramite il bilanciatore del carico delle applicazioni esterno. I client, ad esempio i microservizi che si trovano sulla tua rete Virtual Private Cloud (VPC), utilizzano un bilanciatore del carico delle applicazioni interno per raggiungere i tuoi servizi.

Per alcuni casi d'uso, ti consigliamo di configurare Cloud Service Mesh per configurare un gateway. Un gateway è essenzialmente un proxy inverso, in genere Envoy in esecuzione su una o più VM, che ascolta le richieste in entrata, le gestisce e le invia a una destinazione. La destinazione può trovarsi in qualsiasi regione Google Cloud o in un cluster Google Kubernetes Engine (GKE). Può anche essere una destinazione al di fuori di Google Cloud raggiungibile da Google Cloud utilizzando la connettività ibrida. Per ulteriori informazioni su quando utilizzare un gateway, consulta Traffico in entrata per la tua mesh.

Nel seguente diagramma, una VM nella regione europe-west1 esegue un proxy che funge da gateway per tre servizi che non eseguono proxy. Il traffico proveniente sia da un bilanciatore del carico delle applicazioni esterno sia da un bilanciatore del carico delle applicazioni interno viene indirizzato al gateway e poi ai tre servizi.

Cloud Service Mesh utilizzato per configurare un gateway.
Cloud Service Mesh utilizzato per configurare un gateway (fai clic per ingrandire)

Più ambienti

Che tu abbia servizi in Google Cloud, on-premise, in altri cloud o in tutti e tre, le sfide fondamentali di networking delle applicazioni rimangono invariate. Come fai ad indirizzare il traffico a questi servizi? Come comunicano tra loro questi servizi?

Nel seguente diagramma, Cloud Service Mesh instrada il traffico dai servizi eseguiti in Google Cloud a Service G, in esecuzione in un altro cloud pubblico, e a Service E e Service F, entrambi in esecuzione in un data center on-premise. Service A, Service B e Service C utilizzano Envoy come proxy sidecar, mentre Service D è un servizio gRPC senza proxy.

Cloud Service Mesh utilizzato per la comunicazione tra ambienti.
Cloud Service Mesh utilizzato per la comunicazione tra ambienti (fai clic per ingrandire)

Quando utilizzi Cloud Service Mesh, puoi inviare richieste a destinazioni al di fuori di Google Cloud. In questo modo puoi utilizzare Cloud Interconnect o Cloud VPN per instradare in modo privato il traffico dai servizi all'interno di Google Cloud a servizi o gateway in altri ambienti.

Configurazione di Cloud Service Mesh

La configurazione di Cloud Service Mesh prevede due passaggi. Una volta completata la procedura di configurazione, l'infrastruttura gestisce la rete di applicazioni e Cloud Service Mesh mantiene tutto aggiornato in base alle modifiche al deployment.

Esegui il deployment delle applicazioni

Innanzitutto, esegui il deployment del codice dell'applicazione in container o VM. Google fornisce meccanismi che ti consentono di aggiungere l'infrastruttura di rete delle applicazioni (in genere i proxy Envoy) alle tue istanze VM e ai pod. Questa infrastruttura è configurata per comunicare con Cloud Service Mesh e conoscere i tuoi servizi.

Configura Cloud Service Mesh

Successivamente, configura i servizi globali e definisci la modalità di gestione del traffico. Per configurare Cloud Service Mesh, puoi utilizzare la console Google Cloud (per alcune funzionalità e configurazioni), Google Cloud CLI, l'API Traffic Director o altri strumenti, come Terraform.

Dopo aver completato questi passaggi, Cloud Service Mesh è pronto per configurare l'infrastruttura di rete delle applicazioni.

L'infrastruttura gestisce la rete di applicazioni

Quando un'applicazione invia una richiesta a my-service, l'infrastruttura di rete dell'applicazione (ad esempio un proxy sidecar Envoy) gestisce la richiesta in base alle informazioni ricevute da Cloud Service Mesh. In questo modo, una richiesta per my-service può essere indirizzata senza problemi a un'istanza dell'applicazione in grado di riceverla.

Monitoraggio e aggiornamenti continui

Cloud Service Mesh monitora le istanze dell'applicazione che costituiscono i tuoi servizi. Questo monitoraggio consente a Cloud Service Mesh di rilevare che un servizio è in esecuzione o che la sua capacità è cambiata, ad esempio quando viene creato un nuovo pod Kubernetes. In base a queste informazioni, Cloud Service Mesh aggiorna continuamente l'infrastruttura di rete dell'applicazione.

Funzionalità

Le funzionalità di Cloud Service Mesh offrono funzionalità di networking delle applicazioni ai tuoi microservizi. Alcuni punti salienti sono discussi in questa sezione.

Control plane, controllo di integrità e bilanciamento del carico completamente gestiti

Vuoi dedicare il tuo tempo a creare valore per l'attività, non a gestire l'infrastruttura. Cloud Service Mesh è una soluzione completamente gestita, quindi non devi installare, configurare o aggiornare l'infrastruttura. Puoi usufruire della stessa infrastruttura utilizzata da Google per i controlli di integrità e il bilanciamento del carico globale.

Basati su prodotti open source

Cloud Service Mesh utilizza lo stesso piano di controllo (API xDS) utilizzato da progetti open source di uso comune come Envoy e Istio. Per visualizzare le versioni dell'API supportate, consulta le API del piano di controllo xDS.

L'infrastruttura che fornisce le funzionalità di networking delle applicazioni, ovvero Envoy o gRPC, a seconda del caso d'uso, è anche open source, quindi non devi preoccuparti di essere vincolato a un'infrastruttura proprietaria.

Scala

Dalle soluzioni di networking per applicazioni una tantum ai deployment di mesh di servizi di grandi dimensioni con migliaia di servizi, Cloud Service Mesh è progettato per soddisfare i tuoi requisiti di scalabilità.

Rilevamento dei servizi e monitoraggio di endpoint e backend

Quando la tua applicazione invia una richiesta a my-service, la tua infrastruttura la gestisce senza problemi e la invia alla destinazione corretta. La tua applicazione non deve conoscere nulla su indirizzi IP, protocolli o altre complessità di rete.

Bilanciamento del carico globale e failover

Cloud Service Mesh utilizza il bilanciamento del carico globale e i controlli di integrità di Google per bilanciare in modo ottimale il traffico in base alla posizione del client e del backend, alla vicinanza del backend, all'integrità e alla capacità. Migliora la disponibilità del servizio facendo eseguire automaticamente il failover del traffico su backend integri con sufficiente capacità. Puoi personalizzare il bilanciamento del carico per distribuire il traffico in modo da supportare adeguatamente le esigenze della tua attività.

Gestione del traffico

La gestione avanzata del traffico, che include il routing e la manipolazione delle richieste (in base a nome host, percorso, intestazioni, cookie e altro ancora), ti consente di determinare il flusso di traffico tra i tuoi servizi. Puoi anche applicare azioni come i tentativi di nuovo, i reindirizzamenti e la suddivisione del traffico in base al peso per i deployment canary. Pattern avanzati come l'iniezione di errori, il mirroring del traffico e il rilevamento degli outlier consentono casi d'uso DevOps che migliorano la resilienza.

Osservabilità

L'infrastruttura di rete dell'applicazione raccoglie informazioni di telemetria, come metriche, log e tracce, che possono essere aggregate centralmente in Google Cloud Observability. Dopo aver raccolto queste informazioni, puoi ricavare approfondimenti e creare avvisi in modo da ricevere una notifica in caso di problemi.

Controlli di servizio VPC

Puoi utilizzare Controlli di servizio VPC per fornire ulteriore sicurezza alle risorse e ai servizi della tua applicazione. Puoi aggiungere progetti ai perimetri di servizio che proteggono risorse e servizi (come Cloud Service Mesh) dalle richieste che originano dall'esterno del perimetro. Per scoprire di più sui Controlli di servizio VPC, consulta la panoramica dei Controlli di servizio VPC.

Per scoprire di più sull'utilizzo di Cloud Service Mesh con i Controlli di servizio VPC, consulta la pagina Prodotti supportati.

Passaggi successivi

Questo è un documento precedente che si applica principalmente alle API di bilanciamento del carico. Ti consigliamo vivamente di non configurare Cloud Service Mesh utilizzando le API di bilanciamento del carico.