Mesh di servizi Cloud con gruppi di endpoint di rete a connettività ibrida

Cloud Service Mesh supporta ambienti che si estendono oltre Google Cloud, compresi data center on-premise e altri cloud pubblici raggiungibili tramite la connettività ibrida.

Puoi configurare Cloud Service Mesh in modo che il mesh di servizi possa inviare traffico a endpoint che si trovano al di fuori di Google Cloud. Questi endpoint includono quanto segue:

  • Bilanciatori del carico on-premise.
  • Applicazioni server su un'istanza di macchina virtuale (VM) in un altro cloud.
  • Qualsiasi altra destinazione raggiungibile con la connettività ibrida, che può essere raggiunta con un indirizzo IP e una porta.

Aggiungi l'indirizzo IP e la porta di ogni endpoint a un gruppo di endpoint di rete (NEG) con connettività ibrida. I NEG di connettività ibrida sono di tipo NON_GCP_PRIVATE_IP_PORT.

Il supporto di Cloud Service Mesh per i servizi on-premise e multi-cloud ti consente di:

  • Instrada il traffico a livello globale, anche verso gli endpoint dei servizi on-premise e multi-cloud.
  • Porta i vantaggi di Cloud Service Mesh e del mesh di servizi, tra cui funzionalità come Service Discovery e gestione avanzata del traffico, ai servizi in esecuzione sulla tua infrastruttura esistente al di fuori di Google Cloud.
  • Combina le funzionalità di Cloud Service Mesh con Cloud Load Balancing per portare i servizi di networking di Google Cloud in più ambienti.

I NEG di connettività ibrida (NON_GCP_PRIVATE_IP_PORT NEG) non sono supportati con i client gRPC senza proxy.

Casi d'uso

Cloud Service Mesh può configurare il networking tra servizi basati su VM e container in più ambienti, tra cui:

  • Google Cloud
  • Data center on-premise
  • Altri cloud pubblici

Instrada il traffico mesh su una località on-premise o un altro cloud

Il caso d'uso più semplice di questa funzionalità è il routing del traffico. La tua applicazione esegue un proxy Envoy di Cloud Service Mesh . Cloud Service Mesh indica al client i tuoi servizi e gli endpoint di ogni servizio.

Routing del traffico mesh a una località on-premise o a un altro cloud.
Routing del traffico mesh a una località on-premise o a un altro cloud (fai clic per ingrandire)

Nel diagramma precedente, quando l'applicazione invia una richiesta al servizio on-prem, il client Cloud Service Mesh ispeziona la richiesta in uscita e aggiorna la sua destinazione. La destinazione viene impostata su un endpoint associato al servizio on-prem (in questo caso, 10.2.0.1). La richiesta si sposta quindi su Cloud VPN o Cloud Interconnect verso la destinazione prevista.

Se devi aggiungere altri endpoint, devi aggiornare Cloud Service Mesh per aggiungerli al tuo servizio. Non è necessario modificare il codice dell'applicazione.

Esegui la migrazione di un servizio on-premise esistente a Google Cloud

L'invio del traffico a un endpoint non Google Cloud consente di instradare il traffico ad altri ambienti. Puoi combinare questa funzionalità con la gestione avanzata del traffico per eseguire la migrazione dei servizi da un ambiente all'altro.

Migrazione da una località on-premise a Google Cloud.
Migrazione da una località on-premise a Google Cloud (fai clic per ingrandire)

Il diagramma precedente estende il pattern precedente. Invece di configurare Cloud Service Mesh per inviare tutto il traffico al servizio on-prem, devi configurare Cloud Service Mesh in modo da utilizzare la suddivisione del traffico in base alla ponderazione per suddividere il traffico tra due servizi.

La suddivisione del traffico ti consente di iniziare inviando lo 0% del traffico al servizio cloud e il 100% al servizio on-prem. Puoi quindi aumentare gradualmente la percentuale di traffico inviato al servizio cloud. Alla fine invierai il 100% del traffico al servizio cloud e potrai ritirare il servizio on-prem.

Servizi perimetrali della rete Google Cloud per deployment on-premise e multi-cloud

Infine, puoi combinare questa funzionalità con le soluzioni di networking esistenti di Google Cloud. Google Cloud offre un'ampia gamma di servizi di rete, come il bilanciamento del carico esterno globale con Google Cloud Armor per la protezione DDoS (Distributed Denial-of-Service), che puoi utilizzare con Cloud Service Mesh per aggiungere nuove funzionalità ai tuoi servizi on-premise o multi-cloud. Inoltre, non è necessario esporre questi servizi on-premise o multi-cloud sulla rete internet pubblica.

Deployment che coprono diversi ambienti.
Deployment che coprono più ambienti (fai clic per ingrandire)

Nel diagramma precedente, il traffico proveniente dai client sulla rete internet pubblica entra nella rete di Google Cloud da un bilanciatore del carico Google Cloud, come un Application Load Balancer esterno globale. Quando il traffico raggiunge il bilanciatore del carico, puoi applicare servizi perimetrali di rete come la protezione DDoS di Google Cloud Armor o l'autenticazione utente con Identity-Aware Proxy (IAP). Per maggiori informazioni, consulta Servizi perimetrali di rete per deployment multi-ambiente.

Dopo aver applicato questi servizi, il traffico viene interrotto brevemente in Google Cloud, dove un'applicazione o un proxy autonomo (configurato da Cloud Service Mesh) inoltra il traffico attraverso Cloud VPN o Cloud Interconnect al tuo servizio on-premise.

Risorse e architettura di Google Cloud

Questa sezione fornisce informazioni di base sulle risorse Google Cloud che puoi utilizzare per fornire un mesh di servizi gestito da Cloud Service Mesh per ambienti on-premise e multi-cloud.

Il seguente diagramma illustra le risorse Google Cloud che consentono il supporto di servizi on-premise e multi-cloud per Cloud Service Mesh. La risorsa chiave sono il NEG e i relativi endpoint di rete. Le altre risorse sono quelle che configuri come parte di una configurazione standard di Cloud Service Mesh. Per semplicità, il diagramma non mostra opzioni quali più servizi di backend globali.

Risorse di Compute Engine per servizi on-premise e multi-cloud.
Risorse Compute Engine per servizi on-premise e multi-cloud (fai clic per ingrandire)

Quando configuri Cloud Service Mesh, utilizzi la risorsa API dei servizi di backend globali per creare i servizi. Un servizio è un costrutto logico che combina quanto segue:

  1. Criteri da applicare quando un client tenta di inviare traffico al servizio.
  2. Uno o più backend o endpoint che gestiscono il traffico destinato al servizio.

I servizi on-premise e multi-cloud sono come qualsiasi altro servizio configurato da Cloud Service Mesh. La differenza principale è che utilizzi un NEG di connettività ibrida per configurare gli endpoint di questi servizi. Il tipo di endpoint di rete di questi NEG è impostato su NON_GCP_PRIVATE_IP_PORT. Gli endpoint che aggiungi ai NEG di connettività ibrida devono essere combinazioni IP:port valide che i tuoi client possono raggiungere, ad esempio tramite connettività ibrida come Cloud VPN o Cloud Interconnect.

Ogni NEG ha un tipo di endpoint di rete e può contenere solo endpoint di rete dello stesso tipo. Questo tipo determina quanto segue:

  • La destinazione a cui i tuoi servizi possono inviare traffico.
  • Comportamento del controllo di integrità.

Quando crei il NEG, lo configuri come segue in modo da poter inviare il traffico a una destinazione on-premise o multi-cloud.

  • Imposta il tipo di endpoint di rete su NON_GCP_PRIVATE_IP_PORT. che rappresenta un indirizzo IP raggiungibile. Se questo indirizzo IP è on-premise o presso un altro cloud provider, deve essere raggiungibile da Google Cloud utilizzando la connettività ibrida, come quella fornita da Cloud VPN o Cloud Interconnect.
  • Specifica una zona Google Cloud che riduca al minimo la distanza geografica tra Google Cloud e il tuo ambiente on-premise o multi-cloud. Ad esempio, se ospiti un servizio in un ambiente on-premise a Francoforte, in Germania, puoi specificare la zona Google Cloud europe-west3-a quando crei il NEG.

Il comportamento del controllo di integrità per gli endpoint di rete di questo tipo è diverso da quello per gli altri tipi di endpoint di rete. Mentre altri tipi di endpoint di rete utilizzano il sistema di controllo di integrità centralizzato di Google Cloud, NON_GCP_PRIVATE_IP_PORT endpoint di rete utilizzano il meccanismo di controllo di integrità distribuita di Envoy. Per maggiori dettagli, consulta la sezione Limitazioni e altre considerazioni.

Considerazioni sulla connettività e sul networking

I tuoi client Cloud Service Mesh, come i proxy Envoy, devono essere in grado di connettersi a Cloud Service Mesh all'indirizzo trafficdirector.googleapis.com:443. Se perdi la connettività al piano di controllo Cloud Service Mesh, si verifica quanto segue:

  • I client Cloud Service Mesh esistenti non possono ricevere aggiornamenti di configurazione da Cloud Service Mesh. Continuano a operare in base alla configurazione attuale.
  • I nuovi client Cloud Service Mesh non possono connettersi a Cloud Service Mesh. Non possono utilizzare il mesh di servizi fino a quando la connettività non viene ristabilita.

Se vuoi inviare traffico tra Google Cloud e ambienti on-premise o multi-cloud, gli ambienti devono essere connessi tramite connettività ibrida. Consigliamo una connessione ad alta disponibilità abilitata da Cloud VPN o Cloud Interconnect.

Gli indirizzi IP e gli intervalli di indirizzi IP di subnet on-premise, di altri cloud e Google Cloud non devono sovrapporsi.

Limitazioni e altre considerazioni

Di seguito sono riportate le limitazioni per l'utilizzo dei NEG di connettività ibrida.

Impostazione proxyBind

Puoi impostare il valore di proxyBind solo quando crei un targetHttpProxy. Non puoi aggiornare un elemento targetHttpProxy esistente.

Connettività e interruzione della connettività

Per maggiori dettagli sui requisiti e sulle limitazioni di connettività, consulta la sezione Considerazioni su connettività e networking.

Tipi di backend misti

Un servizio di backend può avere backend VM o NEG. Se un servizio di backend ha backend NEG, tutti i NEG devono contenere lo stesso tipo di endpoint di rete. Non puoi avere un servizio di backend con più NEG, ciascuno con tipi di endpoint diversi.

Una mappa URL può avere regole host che si risolvono in servizi di backend diversi. Potresti avere un servizio di backend con solo NEG di connettività ibrida (con endpoint on-premise) e un servizio di backend con NEG autonomi (con endpoint GKE). La mappa URL può contenere regole, ad esempio la suddivisione del traffico in base ai pesi, che suddividono il traffico tra ciascuno di questi servizi di backend.

Utilizzo di un NEG con endpoint di tipo NON_GCP_PRIVATE_IP_PORT con i backend Google Cloud

È possibile creare un servizio di backend con un NEG di connettività ibrida che punta ai backend in Google Cloud. Tuttavia, sconsigliamo di usare questo modello perché i NEG di connettività ibrida non traggono vantaggio dal controllo di integrità centralizzato. Per una spiegazione del controllo di integrità centralizzato e distribuito, consulta la sezione Controllo di integrità.

Registrazione degli endpoint

Se vuoi aggiungere un endpoint a un NEG, devi aggiornare il NEG. Questa operazione può essere eseguita manualmente o automatizzata utilizzando le API REST NEG di Google Cloud o Google Cloud CLI.

Quando viene avviata una nuova istanza di un servizio, puoi utilizzare le API Google Cloud per registrare l'istanza con il NEG configurato. Quando utilizzi gruppi di istanze gestite di Compute Engine (MIG) o GKE (in Google Cloud), il controller MIG o NEG gestisce automaticamente rispettivamente la registrazione degli endpoint.

Controllo di integrità

Quando utilizzi NEG di connettività ibrida, il comportamento del controllo di integrità differisce da quello standard di controllo di integrità centralizzato per i seguenti modi:

  • Per gli endpoint di rete di tipo NON_GCP_PRIVATE_IP_PORT, Cloud Service Mesh configura i client in modo da utilizzare il piano dati per gestire il controllo di integrità. Per evitare di inviare richieste a backend in stato non integro, le istanze Envoy eseguono i propri controlli di integrità e utilizzano i propri meccanismi.
  • Poiché il tuo piano dati gestisce i controlli di integrità, non puoi utilizzare la console Google Cloud, l'API o Google Cloud CLI per recuperare lo stato del controllo di integrità.

In pratica, l'uso di NON_GCP_PRIVATE_IP_PORT significa quanto segue:

  • Poiché i client Cloud Service Mesh gestiscono ciascuno il controllo di integrità in modo distribuito, potresti notare un aumento del traffico di rete a causa del controllo di integrità. L'aumento dipende dal numero di client Cloud Service Mesh e dal numero di endpoint di cui ciascun client ha bisogno per il controllo di integrità. Ad esempio:
    • Quando aggiungi un altro endpoint a un NEG di connettività ibrida, i client Cloud Service Mesh esistenti potrebbero iniziare a eseguire il controllo di integrità degli endpoint nei NEG di connettività ibrida.
    • Quando aggiungi un'altra istanza al tuo mesh di servizi (ad esempio, un'istanza VM che esegue il codice dell'applicazione e un client Cloud Service Mesh), la nuova istanza potrebbe iniziare il controllo di integrità degli endpoint nei NEG di connettività ibrida.
    • Il traffico di rete a causa dei controlli di integrità aumenta con una frequenza quadratica (O(n^2)).

Rete VPC

Un mesh di servizi è identificato in modo univoco dal nome di rete Virtual Private Cloud (VPC). I client Cloud Service Mesh ricevono la configurazione da Cloud Service Mesh in base alla rete VPC specificata nella configurazione di bootstrap. Di conseguenza, anche se la tua rete mesh si trova interamente all'esterno di un data center Google Cloud, devi fornire un nome di rete VPC valido nella configurazione di bootstrap.

Account di servizio

In Google Cloud, il bootstrap predefinito di Envoy è configurato in modo da leggere le informazioni sugli account di servizio da uno o entrambi gli ambienti di deployment di Compute Engine e GKE. Quando esegui l'esecuzione al di fuori di Google Cloud, devi specificare esplicitamente un account di servizio, un nome di rete e un numero di progetto nel bootstrap di Envoy. Questo account di servizio deve disporre di autorizzazioni sufficienti per connettersi all'API Cloud Service Mesh.

Passaggi successivi