Cloud Service Mesh con gruppi di endpoint di rete con connettività ibrida

Cloud Service Mesh supporta ambienti che vanno oltre Google Cloud, inclusi data center on-premise e altri cloud pubblici che puoi utilizzare con la connettività ibrida.

Configuri Cloud Service Mesh in modo che il mesh di servizi possa inviare traffico agli endpoint esterni a Google Cloud. Questi endpoint includono:

  • Bilanciatori del carico on-premise.
  • Applicazioni server su un'istanza di una macchina virtuale (VM) in un altro cloud.
  • Qualsiasi altra destinazione raggiungibile con la connettività ibrida e 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 consente di:

  • Instrada il traffico a livello globale, compresi gli endpoint dei servizi on-premise e multi-cloud.
  • Trasferisci i vantaggi di Cloud Service Mesh e mesh di servizi, tra cui funzionalità come Service Discovery e la gestione avanzata del traffico, ai servizi in esecuzione sull'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 su 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 a una località on-premise o a 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 comunica al client i tuoi servizi e gli endpoint di ogni servizio.

Instradamento 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 ne aggiorna la destinazione. La destinazione viene impostata su un endpoint associato al servizio on-prem (in questo caso, 10.2.0.1). La richiesta viaggia quindi su Cloud VPN o Cloud Interconnect verso la destinazione prevista.

Se devi aggiungere altri endpoint, aggiorna 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 di traffico a un endpoint non Google Cloud ti consente di instradare il traffico ad altri ambienti. Puoi combinare questa funzionalità con una gestione avanzata del traffico per migrare i 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. Anziché configurare Cloud Service Mesh per inviare tutto il traffico al servizio on-prem, puoi configurare Cloud Service Mesh in modo da utilizzare la suddivisione del traffico basata su pesi 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 proporzione del traffico inviato al servizio cloud. Alla fine, invii 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 portare nuove funzionalità ai tuoi servizi on-premise o multi-cloud. L'aspetto migliore è che non è necessario esporre questi servizi on-premise o multi-cloud alla rete internet pubblica.

Deployment che interessano più 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 Google Cloud da un bilanciatore del carico Google Cloud, come il nostro bilanciatore del carico delle applicazioni esterno globale. Quando il traffico raggiunge il bilanciatore del carico, puoi applicare servizi perimetrali della rete come la protezione DDoS di Google Cloud Armor o l'autenticazione utente di Identity-Aware Proxy (IAP). Per ulteriori informazioni, consulta Servizi perimetrali della rete per deployment multiambiente.

Dopo aver applicato questi servizi, il traffico si arresta per breve tempo 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 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 suoi 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 come più servizi di backend globali.

Risorse 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 fondamentale è che utilizzi un NEG di connettività ibrida per configurare gli endpoint di questi servizi. Per questi NEG il tipo di endpoint di rete è 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 servizi possono inviare traffico.
  • Comportamento del controllo di integrità.

Quando crei il tuo NEG, configuralo 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. Questo rappresenta un indirizzo IP raggiungibile. Se l'indirizzo IP è on-premise o presso un altro cloud provider, deve essere raggiungibile da Google Cloud utilizzando la connettività ibrida, ad esempio quella fornita da Cloud VPN o Cloud Interconnect.
  • Specifica una zona di 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 dal comportamento del controllo di integrità per altri tipi di endpoint di rete. Mentre altri tipi di endpoint di rete utilizzano il sistema centralizzato di controllo di integrità di Google Cloud, gli endpoint di rete NON_GCP_PRIVATE_IP_PORT utilizzano il meccanismo di controllo di integrità distribuito di Envoy. Per ulteriori dettagli, consulta la sezione Limitazioni e altre considerazioni.

Considerazioni su connettività e networking

I client Cloud Service Mesh, come i proxy Envoy, devono poter connettersi a Cloud Service Mesh all'indirizzo trafficdirector.googleapis.com:443. Se perdi la connettività al piano di controllo di 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 funzionare 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 finché la connettività non viene ristabilita.

Per 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 di subnet on-premise, altri cloud e Google Cloud non devono sovrapporsi.

Limitazioni e altre considerazioni

Di seguito sono riportate le limitazioni relative all'utilizzo dei NEG di connettività ibrida.

Impostazione di proxyBind

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

Connettività e interruzione della connettività

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

Tipi di backend misti

Un servizio di backend può avere backend VM o NEG. Se un servizio di backend dispone di backend NEG, tutti i NEG devono contenere lo stesso tipo di endpoint di rete. Non puoi avere un servizio di backend con più NEG, ognuno 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 basata sul peso, 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 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 utilizzare questo pattern perché i NEG di connettività ibrida non traggono vantaggio dal controllo di integrità centralizzato. Per una spiegazione del controllo di integrità centralizzato e del controllo di integrità 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 di Google Cloud NEG 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 che hai configurato. Quando si utilizzano gruppi di istanze gestite di Compute Engine o GKE (in Google Cloud), il controller MIG o NEG gestisce automaticamente la registrazione degli endpoint.

Controllo di integrità

Quando utilizzi i NEG di connettività ibrida, il comportamento del controllo di integrità differisce da quello standard del 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 propri client in modo che utilizzino il piano dati per gestire il controllo di integrità. Per evitare di inviare richieste a backend in stato non integro, le istanze Envoy esegueno i controlli di integrità propri 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, per NON_GCP_PRIVATE_IP_PORT si intende 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 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 a eseguire il controllo di integrità degli endpoint nei NEG di connettività ibrida.
    • Il traffico di rete dovuto ai controlli di integrità aumenta in modo quadratico (O(n^2)).

Rete VPC

Un mesh di servizi è identificato in modo univoco dal nome della 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. Pertanto, anche se la tua rete mesh si trova completamente all'esterno di un data center Google Cloud, devi fornire un nome di rete VPC valido nella configurazione del bootstrap.

Service account

All'interno di Google Cloud, il bootstrap Envoy predefinito è configurato per leggere le informazioni degli account di servizio da uno o entrambi gli ambienti di deployment Compute Engine e GKE. Durante 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 Envoy. Questo account di servizio deve disporre di autorizzazioni sufficienti per connettersi all'API Cloud Service Mesh.

Passaggi successivi