Traffico in entrata per la tua rete mesh

Un mesh di servizi facilita le comunicazioni tra i servizi in esecuzione nel mesh. Come fai a indirizzare il traffico nella tua rete mesh? Puoi utilizzare un gateway per indirizzare il traffico dall'esterno al mesh tramite un punto di contatto.

Questo documento descrive come utilizzare Cloud Load Balancing come gateway per indirizzare il traffico nel tuo mesh e include quanto segue:

  • Considerazioni generali per il tuo gateway.
  • Una panoramica delle opzioni disponibili quando selezioni un gateway per la tua rete mesh.
  • Consigli di architettura che puoi applicare alla topologia del gateway.

In questo documento, gateway si riferisce a una soluzione o a un pattern per gestire il traffico destinato a un servizio nella tua mesh. Ingress Gateway di Istio è un'implementazione di questo pattern. In questo documento, gateway è un termine generico che fa riferimento allo schema generale, non all'implementazione di Istio.

Questo documento si applica alle API Cloud Service Mesh. Dopo i passaggi di configurazione preliminari, consulta la pagina che contiene le istruzioni per il deployment con un gateway di ingresso.

Quando progetti il tuo mesh di servizi, tieni conto del traffico proveniente dalle seguenti fonti:

  • Traffico che ha origine all'interno della tua rete mesh
  • Traffico che ha origine all'esterno della tua rete mesh

Il traffico che ha origine all'interno del tuo mesh viaggia sul piano dati del mesh di servizi per raggiungere un backend o un endpoint associato al servizio di destinazione. Tuttavia, il traffico proveniente dall'esterno del tuo mesh deve prima raggiungere il piano dati del mesh di servizi.

Nel seguente esempio di traffico che ha origine all'interno del tuo mesh, Cloud Service Mesh configura i proxy sidecar. Questi proxy sidecar formano il piano dati della tua rete mesh di servizi. Se il servizio A vuole comunicare con il servizio B, si verifica quanto segue:

  1. Il servizio A invia una richiesta al servizio B per nome.
  2. Questa richiesta viene intercettata e reindirizzata al proxy sidecar del servizio A.
  3. Il proxy sidecar invia quindi la richiesta a un endpoint associato al servizio B.
Il piano dati del mesh gestisce il traffico interno al mesh di servizi.
Il piano dati del mesh gestisce il traffico interno al mesh di servizi (fai clic per ingrandire)


Nell'esempio seguente, il traffico ha origine al di fuori del tuo mesh di servizi e non passa attraverso il piano dati del mesh di servizi.

Il piano di dati del mesh di servizi non gestisce il traffico esterno
        al mesh di servizi.
Il piano dati mesh di servizi non gestisce il traffico esterno al mesh di servizi (fai clic per ingrandire)

In questo esempio, il client si trova al di fuori del tuo mesh di servizi. Poiché non partecipa direttamente alla mesh, il client non sa quali endpoint appartengono ai servizi all'interno della mesh. In altre parole, poiché il client non utilizza un proxy configurato in Cloud Service Mesh per inviare richieste in uscita, non sa quali coppie di porta e indirizzo IP utilizzare per inviare traffico al servizio A o al servizio B. Senza queste informazioni, il client non può raggiungere i servizi all'interno della tua mesh.

Considerazioni per il gateway

Questa sezione fornisce una panoramica dei problemi da considerare quando selezioni un gateway, tra cui:

  • In che modo i clienti possono raggiungere il mio gateway?
  • Quali criteri voglio applicare al traffico che raggiunge il mio gateway?
  • In che modo il mio gateway distribuisce il traffico ai servizi della mia mesh?

Consenti ai client di raggiungere il gateway della tua mesh

I client, che si trovino su internet pubblico, nel tuo ambiente on-premise o in Google Cloud, hanno bisogno di un modo per raggiungere un servizio all'interno del tuo mesh. In genere, per raggiungere un servizio nel mesh viene utilizzato un indirizzo IP e una porta indirizzabili pubblicamente o privatamente che risolvono in un gateway. I client esterni al tuo mesh utilizzano questo indirizzo IP e questa porta per inviare richieste ai servizi nel tuo mesh tramite il gateway.

Cloud Load Balancing offre varie opzioni di bilanciamento del carico che puoi utilizzare come gateway per il tuo mesh. Le domande principali da porsi quando scegli un bilanciatore del carico Google Cloud da utilizzare come gateway sono le seguenti:

  • I miei clienti si trovano sulla rete internet pubblica, in un ambiente on-premise o fanno parte della mia rete Virtual Private Cloud (VPC)?
  • Quali protocolli di comunicazione utilizzano i miei clienti?

Per una panoramica delle opzioni di Cloud Load Balancing, a seconda della località e del protocollo di comunicazione del client, consulta la sezione Scegliere un gateway per il mesh.

Gestire il traffico al gateway

Poiché il gateway si trova all'esterno del mesh, tra i client al di fuori del mesh e i servizi al suo interno, è un luogo naturale per applicare i criteri quando il traffico entra nel mesh. Questi criteri includono:

  • Gestione del traffico, ad esempio routing, reindirizzamenti e trasformazione delle richieste
  • Sicurezza, ad esempio terminazione TLS e protezione DDoS (Distributed Denial of Service) di Google Cloud Armor
  • Memorizzazione nella cache di Cloud CDN

La sezione Scegli un gateway per la tua mesh mette in evidenza le norme pertinenti all'esterno della mesh.

Invia traffico dal gateway a un servizio nel tuo mesh

Dopo aver applicato i criteri al traffico in entrata, il gateway decide dove inviare il traffico. Per configurare questa opzione, utilizza i criteri di gestione del traffico e di bilanciamento del carico. Ad esempio, il gateway potrebbe ispezionare l'intestazione della richiesta per identificare il servizio mesh che deve ricevere il traffico. Dopo che il gateway ha identificato il servizio, distribuisce il traffico a un backend specifico in base a un criterio di bilanciamento del carico.

La sezione Scegliere un gateway per la rete mesh illustra i backend a cui un gateway può inviare il traffico.

Scegli un gateway per la tua rete mesh

Google Cloud offre una vasta gamma di bilanciatori del carico che possono fungere da gateway per il tuo mesh. Questa sezione illustra la selezione di un gateway, confrontando le seguenti opzioni in base alle dimensioni pertinenti al pattern del gateway:

In questa sezione, facciamo riferimento ai gateway di primo livello e di secondo livello. Questi termini vengono utilizzati per descrivere l'utilizzo di uno o due gateway per gestire il traffico in entrata nella tua mesh.

Potresti aver bisogno di un solo livello, un singolo bilanciatore del carico che funge da gateway per la mesh. A volte, però, ha senso avere più gateway. In queste configurazioni, un gateway gestisce il traffico in entrata in Google Cloud e un gateway di secondo livello separato gestisce il traffico quando entra nella rete mesh di servizi.

Ad esempio, potresti voler applicare i criteri di sicurezza di Google Cloud Armor al traffico in entrata in Google Cloud e i criteri di gestione avanzata del traffico al traffico in entrata nel mesh. Il pattern di utilizzo di un secondo gateway configurato per Cloud Service Mesh è descritto nella sezione Gestire il traffico in entrata utilizzando un gateway di secondo livello all'esterno del mesh.

La tabella seguente mette a confronto le funzionalità disponibili, a seconda dell'opzione di gateway selezionata.

Gateway Posizione client Protocolli Criteri Backend/endpoint
Bilanciatore del carico delle applicazioni interno

Client basati su Google Cloud nella stessa regione del bilanciatore del carico.

Client on-premise le cui richieste arrivano nella stessa regione Google Cloud del bilanciatore del carico, ad esempio utilizzando Cloud VPN o Cloud Interconnect.

HTTP/1.1

HTTP/2

HTTPS

Gestione avanzata del traffico

Terminazione TLS con certificati autogestiti

Backend nella stessa regione Google Cloud del bilanciatore del carico, in esecuzione su:

  • Backend delle istanze di macchine virtuali (VM) su Compute Engine
  • Istanze container su Google Kubernetes Engine (GKE) e Kubernetes
Application Load Balancer esterno Client sulla rete internet pubblica

HTTP/1.1

HTTP/2

HTTPS

Gestione del traffico

Cloud CDN (inclusi i backend dei bucket Cloud Storage)

Terminazione TLS con certificati gestiti da Google o autogestiti

Criteri SSL

Google Cloud Armor per la prevenzione di attacchi DDoS e web

Supporto di Identity-Aware Proxy (IAP) per l'autenticazione degli utenti

Backend in qualsiasi regione Google Cloud, in esecuzione su:

  • VM su Compute Engine
  • Istanze container su GKE e Kubernetes
Bilanciatore del carico di rete passthrough interno

Client basati su Google Cloud in qualsiasi regione; questo richiede l'accesso globale se i client si trovano in una regione diversa da quella del bilanciatore del carico.

Client on-premise le cui richieste arrivano in qualsiasi regione Google Cloud, ad esempio utilizzando Cloud VPN o Cloud Interconnect.

TCP Back-end nella stessa regione Google Cloud del bilanciatore del carico, in esecuzione su VM su Compute Engine.
Bilanciatore del carico di rete passthrough esterno Client sulla rete internet pubblica TCP o UDP Back-end nella stessa regione Google Cloud del bilanciatore del carico, in esecuzione su VM su Compute Engine.
Bilanciatore del carico di rete proxy esterno Client sulla rete internet pubblica SSL o TCP

Terminazione TLS con certificati gestiti da Google o autogestiti (solo proxy SSL)

Criteri SSL (solo proxy SSL)

Backend in qualsiasi regione Google Cloud, in esecuzione su:

  • VM su Compute Engine
  • Istanze container su GKE e Kubernetes
Proxy edge
(su istanze VM o container) configurato da Cloud Service Mesh
I clienti devono trovarsi in una località in cui si applica una delle seguenti condizioni:
  • Possono inviare una richiesta a un bilanciatore del carico gestito da Google Cloud, che poi la invia al proxy perimetrale. Per maggiori dettagli, vedi Gestire il traffico in entrata utilizzando un gateway di secondo livello all'esterno della rete mesh.
  • Possono inviare una richiesta tramite un proxy, ad esempio un proxy sidecar, configurato da Cloud Service Mesh.
  • Possono inviare una richiesta direttamente all'indirizzo IP e alla porta di una VM o di un'istanza del contenitore su cui è in esecuzione il proxy perimetrale.

HTTP/1.1

HTTP/2

Gestione avanzata del traffico (incluso il supporto di regex)

Backend in qualsiasi regione Google Cloud, in esecuzione su:

  • VM su Compute Engine
  • Istanze container su GKE e Kubernetes

Per un confronto dettagliato delle funzionalità, consulta la pagina Funzionalità dei bilanciatori del carico. Per una panoramica dettagliata delle funzionalità di Cloud Service Mesh, consulta la pagina Funzionalità di Cloud Service Mesh.

Esegui il deployment e configura i gateway

Un'ultima considerazione da fare nella scelta del gateway è l'esperienza dello sviluppatore e gli strumenti che vuoi utilizzare. Google Cloud offre più approcci per creare e gestire il gateway.

Google Cloud CLI e API Compute Engine

Per configurare i prodotti di bilanciamento del carico gestiti di Google Cloud e Cloud Service Mesh, puoi utilizzare le API Google Cloud CLI e Compute Engine. La gcloud CLI e le API forniscono meccanismi per eseguire il deployment e configurare obbligatoriamente le risorse Google Cloud. Per automatizzare le attività ripetitive, puoi creare script.

Console Google Cloud

Per configurare Cloud Service Mesh e i bilanciatori di carico gestiti di Google Cloud, puoi utilizzare la console Google Cloud.

Per configurare il pattern di gateway, probabilmente avrai bisogno sia della pagina Cloud Service Mesh sia della pagina Bilanciamento del carico.

GKE e Ingress multi-cluster

I controller di rete GKE e GKE Enterprise supportano anche il deployment di Cloud Load Balancing per l'integrazione integrata con il networking dei container. Forniscono un'interfaccia dichiarativa in stile Kubernetes per il deployment e la configurazione dei gateway. I controller GKE Ingress e Ingress multi-cluster gestiscono i bilanciatori del carico interni e esterni per l'invio di traffico a un singolo cluster o a più cluster GKE. La risorsa Ingress può essere configurata anche per puntare a servizi configurati con Cloud Service Mesh e di cui è stato eseguito il deployment nei cluster GKE.

Pattern di architettura del gateway

Questa sezione descrive pattern di alto livello e fornisce diagrammi di architettura per il tuo gateway.

Il pattern più comune prevede l'utilizzo di un bilanciatore del carico gestito da Google Cloud come gateway:

  1. I client inviano traffico a un bilanciatore del carico gestito da Google Cloud che funge da gateway.

    • Il gateway applica i criteri.
  2. Il gateway invia il traffico a un servizio nel tuo mesh.

Un pattern più avanzato prevede gateway a due livelli. I gateway funzionano come segue:

  1. I client inviano traffico a un bilanciatore del carico gestito da Google Cloud che funge da gateway di primo livello.

    • Il gateway applica i criteri.
  2. Il gateway invia il traffico a un proxy edge (o a un pool di proxy edge) configurato da Cloud Service Mesh. Questo proxy edge funge da gateway di secondo livello. Questo livello esegue le seguenti operazioni:

    • Offre una chiara separazione delle responsabilità in cui, ad esempio, un team è responsabile del traffico in entrata che entra in Google Cloud, mentre un altro team è responsabile del traffico in entrata che entra nel mesh del team.

    • Ti consente di applicare criteri che potrebbero non essere supportati nel bilanciatore del carico gestito da Google Cloud.

  3. Il gateway di secondo livello invia il traffico a un servizio nel tuo mesh.

Il pattern di ingresso termina quando il traffico raggiunge un servizio in-mesh. Sia il caso comune sia i pattern avanzati sono descritti nelle sezioni seguenti.

Abilita il traffico in entrata da internet

Se i tuoi client si trovano al di fuori di Google Cloud e devono raggiungere Google Cloud tramite internet pubblico, puoi utilizzare uno dei seguenti bilanciatori del carico come gateway:

Traffico in entrata dai client sulla rete internet pubblica ai servizi in-mesh utilizzando un bilanciatore del carico.
Traffico in entrata dai client sulla rete internet pubblica ai servizi in-mesh utilizzando un bilanciatore del carico (fai clic per ingrandire)

In questo pattern, il bilanciatore del carico gestito da Google Cloud funge da gateway. Il gateway gestisce il traffico in entrata prima di inoltrarlo a un servizio nella tua mesh.

Ad esempio, puoi scegliere un bilanciatore del carico delle applicazioni esterno come gateway per utilizzare quanto segue:

  • Un indirizzo IP anycast globale routabile pubblicamente, che riduce al minimo la latenza e i costi di attraversamento della rete.
  • Google Cloud Armor e terminazione TLS per proteggere il traffico verso il tuo mesh.
  • Cloud CDN per pubblicare contenuti web e video.
  • Funzionalità di gestione del traffico come il routing basato sull'host e sul percorso.

Per ulteriori informazioni che ti aiutino a scegliere un gateway appropriato, consulta la sezione Scegliere un gateway per la rete mesh.

Abilita il traffico in entrata dai client nella VPC e nelle reti on-premise collegate

Se i client si trovano all'interno della tua rete VPC o se sono on-premise e possono raggiungere i servizi Google Cloud utilizzando un metodo di connettività privato (come Cloud VPN o Cloud Interconnect), puoi utilizzare uno dei seguenti bilanciatori del carico come gateway:

Traffico in entrata dai client su una rete VPC ai servizi in-mesh utilizzando un bilanciatore del carico.
Traffico in entrata dai client su una rete VPC ai servizi in-mesh utilizzando un bilanciatore del carico (fai clic per ingrandire)

In questo pattern, il bilanciatore del carico gestito da Google Cloud funge da gateway. Il gateway gestisce il traffico in entrata prima di inoltrarlo a un servizio nella tua mesh.

Ad esempio, puoi scegliere un bilanciatore del carico delle applicazioni interno come gateway per utilizzare queste funzionalità:

  • Un indirizzo IP con indirizzo privato
  • Terminazione TLS per proteggere il tuo mesh
  • Funzionalità di gestione avanzata del traffico, come la suddivisione del traffico in base al peso
  • NEG come backend

Per ulteriori informazioni che ti aiutino a scegliere un gateway appropriato, consulta la sezione Scegliere un gateway per la rete mesh.

Gestisci il traffico in entrata utilizzando un gateway di secondo livello all'esterno del tuo mesh

A seconda delle tue esigenze, potresti prendere in considerazione un modello più avanzato che aggiunge un gateway aggiuntivo.

Traffico in entrata dai client esterni ai servizi in-mesh utilizzando un bilanciatore del carico e un proxy perimetrale.
Traffico in entrata da client esterni a servizi in-mesh utilizzando un bilanciatore del carico e un proxy edge (fai clic per ingrandire)

Questo gateway è un proxy edge configurato con Cloud Service Mesh (o un pool di proxy) che si trova dietro il bilanciatore del carico gestito da Google Cloud. Puoi ospitare questo gateway di secondo livello nel tuo progetto utilizzando un pool di VM Compute Engine (un gruppo di istanze gestite) o servizi GKE.

Sebbene questo pattern sia più avanzato, offre vantaggi aggiuntivi:

  • Il bilanciatore del carico gestito da Google Cloud applica un insieme iniziale di criteri, ad esempio la protezione di Google Cloud Armor se utilizzi un bilanciatore del carico delle applicazioni esterno.

  • Il proxy edge configurato da Cloud Service Mesh applica un secondo insieme di criteri che potrebbero non essere disponibili nel bilanciatore del carico gestito da Google Cloud. Questi criteri includono una gestione avanzata del traffico che utilizza espressioni regolari applicate alle intestazioni HTTP e la suddivisione del traffico in base al peso.

Questo modello può essere configurato in base alla struttura della tua organizzazione. Ad esempio:

  1. Un team potrebbe essere responsabile della gestione del traffico in entrata su Google Cloud, mentre un altro team è responsabile della gestione del traffico in entrata nel proprio mesh.

  2. Se più team offrono servizi su un VPC condiviso, con ogni team che possiede il proprio progetto di servizio, i team possono utilizzare questo pattern per gestire e applicare i criteri nei propri mesh. Ogni team può esporre un gateway configurato con Cloud Service Mesh raggiungibile su una singola coppia di indirizzo IP e porta. Un team può quindi definire e gestire in modo indipendente i criteri applicati al traffico in entrata nel proprio mesh.

Questo pattern può essere implementato utilizzando qualsiasi bilanciatore del carico gestito da Google Cloud, a condizione che possa inviare traffico ai backend che ospitano i gateway configurati con Cloud Service Mesh.

Utilizzare le API di routing del servizio per il traffico in entrata

Le API di routing dei servizi forniscono la risorsa Gateway per configurare la gestione e la sicurezza del traffico per i proxy Envoy che agiscono come gateway di ingresso, consentendo ai client esterni di connettersi al mesh di servizi (da nord a sud). Per ulteriori informazioni, leggi la panoramica del routing dei servizi e Configurare un gateway di ingresso.

Passaggi successivi