Su Google Cloud Platform (GCP), ogni nuovo progetto nasce con una rete VPC predefinita quando si abilita l'API Compute Engine, salvo disattivarla.
Una scelta che semplifica l'utilizzo di GCP, perché evita di dover creare VPC e subnet personalizzate. Il problema della rete predefinita, però, è che tutte le subnet generate automaticamente usano un insieme di intervalli IPv4 predefiniti che rientrano nel blocco CIDR 10.128.0.0/9.
La comunicazione interna privata tra progetti non è consentita proprio per via della sovrapposizione delle reti. Il limite riguarda sia il VPC Peering sia Cloud VPN.
In questo articolo vediamo come sfruttare Private Service Connect per accedere in modo privato ai servizi in esecuzione su cluster VM/GKE con reti sovrapposte, sia all'interno della stessa organizzazione GCP sia tra organizzazioni diverse.
Architettura di riferimento
Configurazione target di Private Service Connect
Project B è il progetto producer del servizio e ospita un servizio nginx di esempio in esecuzione su un'istanza di un managed instance group.
Project A è il progetto consumer e deve accedere in modo privato al servizio di Project B. Alle istanze di entrambi i progetti non è assegnato alcun IP esterno.
La regione GCP delle risorse è us-west4
L'API compute.googleapis.com è abilitata sia in Project A sia in Project B
Cloud NAT consente alle istanze private di raggiungere Internet per scaricare i pacchetti
Distribuire il servizio di esempio e l'istanza di test
Le reti di Project A e Project B non hanno alcuna connettività interna: l'istanza in Project A non può quindi raggiungere il servizio in esecuzione in Project B.
Il VPC peering non è ammesso a causa della sovrapposizione di intervalli nella rete predefinita.
Configurare il load balancer interno
Per esporre il servizio tramite service attachment, Private Service Connect richiede un load balancer interno. Per questa configurazione creiamo un load balancer TCP interno in Project B.
Creare un nuovo health check HTTP regionale per testare la connettività HTTP delle VM sulla porta 80.
Pubblicare il servizio in Project B, ovvero il progetto producer, per permettere ai consumer in altre reti VPC di connettersi e accedere al servizio in modo privato e sicuro.
Riservare una subnet per Private Service Connect. L'intervallo di questa subnet non deve sovrapporsi alla rete predefinita.
L'elenco dei consumer autorizzati ad accedere ai servizi pubblicati può essere gestito tramite approvazione automatica o manuale. Per i dettagli, consultare Publish services by using Private Service Connect.
Configurare una regola firewall che consenta a Private Service Connect di raggiungere le istanze target.
Un endpoint nel progetto consumer si collega ai servizi della rete VPC del producer tramite una forwarding rule di Private Service Connect.
Alla creazione, l'endpoint viene registrato automaticamente in Service Directory, in un namespace scelto dall'utente o in quello predefinito, goog-psc-default.
Per rendere l'endpoint disponibile in più di una regione, attivare il global access. Il global access è in Preview.
Riservare un indirizzo IP interno da assegnare all'endpoint.
I componenti di Private Service Connect sono ora configurati in Project A e in Project B. Utilizzare l'IP dell'endpoint in Project A per raggiungere il servizio nginx in Project B.
Il test conferma che le istanze nelle reti sovrapposte possono comunicare in modo privato attraverso l'endpoint Private Service Connect.
Questo esempio mostra come usare Private Service Connect per pubblicare e consumare servizi in modo sicuro tra reti sovrapposte.
Il traffico resta interamente all'interno di Google Cloud, con un accesso ai servizi tra consumer e producer governato da un controllo granulare sulle modalità di utilizzo.
Per approfondire Private Service Connect, consultare la pagina dedicata al prodotto.
\n'yum\ install\ epel-release
Creare un managed instance group in Project B.
Una volta completata la creazione, il managed instance group avvia un'istanza nella zona target.
Collegarsi all'istanza via SSH e verificare lo stato del servizio nginx.
Creare un'istanza per il test di connettività in Project A.
Le reti di Project A e Project B non hanno alcuna connettività interna: l'istanza in Project A non può quindi raggiungere il servizio in esecuzione in Project B.
Il VPC peering non è ammesso a causa della sovrapposizione di intervalli nella rete predefinita.
Configurare il load balancer interno
Per esporre il servizio tramite service attachment, Private Service Connect richiede un load balancer interno. Per questa configurazione creiamo un load balancer TCP interno in Project B.
Creare un nuovo health check HTTP regionale per testare la connettività HTTP delle VM sulla porta 80.
Creare il backend service per il traffico HTTP.
Aggiungere l'instance group del servizio nginx al backend service.
Creare una forwarding rule per il backend service.
Configurare una regola firewall che consenta gli health check del load balancer.
Pubblicare i servizi nel progetto producer
Pubblicare il servizio in Project B, ovvero il progetto producer, per permettere ai consumer in altre reti VPC di connettersi e accedere al servizio in modo privato e sicuro.
Riservare una subnet per Private Service Connect. L'intervallo di questa subnet non deve sovrapporsi alla rete predefinita.
Pubblicare il servizio nginx verso Project A con approvazione esplicita del progetto.
L'elenco dei consumer autorizzati ad accedere ai servizi pubblicati può essere gestito tramite approvazione automatica o manuale. Per i dettagli, consultare Publish services by using Private Service Connect.
Configurare una regola firewall che consenta a Private Service Connect di raggiungere le istanze target.
Configurare l'endpoint nel progetto consumer
Un endpoint nel progetto consumer si collega ai servizi della rete VPC del producer tramite una forwarding rule di Private Service Connect.
Alla creazione, l'endpoint viene registrato automaticamente in Service Directory, in un namespace scelto dall'utente o in quello predefinito, goog-psc-default.
Per rendere l'endpoint disponibile in più di una regione, attivare il global access. Il global access è in Preview.
Riservare un indirizzo IP interno da assegnare all'endpoint.
Creare una forwarding rule per collegare l'endpoint al service attachment di Project B.
Verificare la connettività dal progetto consumer
I componenti di Private Service Connect sono ora configurati in Project A e in Project B. Utilizzare l'IP dell'endpoint in Project A per raggiungere il servizio nginx in Project B.
Il test conferma che le istanze nelle reti sovrapposte possono comunicare in modo privato attraverso l'endpoint Private Service Connect.
Questo esempio mostra come usare Private Service Connect per pubblicare e consumare servizi in modo sicuro tra reti sovrapposte.
Il traffico resta interamente all'interno di Google Cloud, con un accesso ai servizi tra consumer e producer governato da un controllo granulare sulle modalità di utilizzo.
Per approfondire Private Service Connect, consultare la pagina dedicata al prodotto.
\n'yum\ -y\ install\ nginx
Creare un managed instance group in Project B.
Una volta completata la creazione, il managed instance group avvia un'istanza nella zona target.
Collegarsi all'istanza via SSH e verificare lo stato del servizio nginx.
Creare un'istanza per il test di connettività in Project A.
Le reti di Project A e Project B non hanno alcuna connettività interna: l'istanza in Project A non può quindi raggiungere il servizio in esecuzione in Project B.
Il VPC peering non è ammesso a causa della sovrapposizione di intervalli nella rete predefinita.
Configurare il load balancer interno
Per esporre il servizio tramite service attachment, Private Service Connect richiede un load balancer interno. Per questa configurazione creiamo un load balancer TCP interno in Project B.
Creare un nuovo health check HTTP regionale per testare la connettività HTTP delle VM sulla porta 80.
Creare il backend service per il traffico HTTP.
Aggiungere l'instance group del servizio nginx al backend service.
Creare una forwarding rule per il backend service.
Configurare una regola firewall che consenta gli health check del load balancer.
Pubblicare i servizi nel progetto producer
Pubblicare il servizio in Project B, ovvero il progetto producer, per permettere ai consumer in altre reti VPC di connettersi e accedere al servizio in modo privato e sicuro.
Riservare una subnet per Private Service Connect. L'intervallo di questa subnet non deve sovrapporsi alla rete predefinita.
Pubblicare il servizio nginx verso Project A con approvazione esplicita del progetto.
L'elenco dei consumer autorizzati ad accedere ai servizi pubblicati può essere gestito tramite approvazione automatica o manuale. Per i dettagli, consultare Publish services by using Private Service Connect.
Configurare una regola firewall che consenta a Private Service Connect di raggiungere le istanze target.
Configurare l'endpoint nel progetto consumer
Un endpoint nel progetto consumer si collega ai servizi della rete VPC del producer tramite una forwarding rule di Private Service Connect.
Alla creazione, l'endpoint viene registrato automaticamente in Service Directory, in un namespace scelto dall'utente o in quello predefinito, goog-psc-default.
Per rendere l'endpoint disponibile in più di una regione, attivare il global access. Il global access è in Preview.
Riservare un indirizzo IP interno da assegnare all'endpoint.
Creare una forwarding rule per collegare l'endpoint al service attachment di Project B.
Verificare la connettività dal progetto consumer
I componenti di Private Service Connect sono ora configurati in Project A e in Project B. Utilizzare l'IP dell'endpoint in Project A per raggiungere il servizio nginx in Project B.
Il test conferma che le istanze nelle reti sovrapposte possono comunicare in modo privato attraverso l'endpoint Private Service Connect.
Questo esempio mostra come usare Private Service Connect per pubblicare e consumare servizi in modo sicuro tra reti sovrapposte.
Il traffico resta interamente all'interno di Google Cloud, con un accesso ai servizi tra consumer e producer governato da un controllo granulare sulle modalità di utilizzo.
Per approfondire Private Service Connect, consultare la pagina dedicata al prodotto.
Una volta completata la creazione, il managed instance group avvia un'istanza nella zona target.
Collegarsi all'istanza via SSH e verificare lo stato del servizio nginx.
Creare un'istanza per il test di connettività in Project A.
Le reti di Project A e Project B non hanno alcuna connettività interna: l'istanza in Project A non può quindi raggiungere il servizio in esecuzione in Project B.
Il VPC peering non è ammesso a causa della sovrapposizione di intervalli nella rete predefinita.
Configurare il load balancer interno
Per esporre il servizio tramite service attachment, Private Service Connect richiede un load balancer interno. Per questa configurazione creiamo un load balancer TCP interno in Project B.
Creare un nuovo health check HTTP regionale per testare la connettività HTTP delle VM sulla porta 80.
Creare il backend service per il traffico HTTP.
Aggiungere l'instance group del servizio nginx al backend service.
Creare una forwarding rule per il backend service.
Configurare una regola firewall che consenta gli health check del load balancer.
Pubblicare i servizi nel progetto producer
Pubblicare il servizio in Project B, ovvero il progetto producer, per permettere ai consumer in altre reti VPC di connettersi e accedere al servizio in modo privato e sicuro.
Riservare una subnet per Private Service Connect. L'intervallo di questa subnet non deve sovrapporsi alla rete predefinita.
Pubblicare il servizio nginx verso Project A con approvazione esplicita del progetto.
L'elenco dei consumer autorizzati ad accedere ai servizi pubblicati può essere gestito tramite approvazione automatica o manuale. Per i dettagli, consultare Publish services by using Private Service Connect.
Configurare una regola firewall che consenta a Private Service Connect di raggiungere le istanze target.
Configurare l'endpoint nel progetto consumer
Un endpoint nel progetto consumer si collega ai servizi della rete VPC del producer tramite una forwarding rule di Private Service Connect.
Alla creazione, l'endpoint viene registrato automaticamente in Service Directory, in un namespace scelto dall'utente o in quello predefinito, goog-psc-default.
Per rendere l'endpoint disponibile in più di una regione, attivare il global access. Il global access è in Preview.
Riservare un indirizzo IP interno da assegnare all'endpoint.
Creare una forwarding rule per collegare l'endpoint al service attachment di Project B.
Verificare la connettività dal progetto consumer
I componenti di Private Service Connect sono ora configurati in Project A e in Project B. Utilizzare l'IP dell'endpoint in Project A per raggiungere il servizio nginx in Project B.
Il test conferma che le istanze nelle reti sovrapposte possono comunicare in modo privato attraverso l'endpoint Private Service Connect.
Questo esempio mostra come usare Private Service Connect per pubblicare e consumare servizi in modo sicuro tra reti sovrapposte.
Il traffico resta interamente all'interno di Google Cloud, con un accesso ai servizi tra consumer e producer governato da un controllo granulare sulle modalità di utilizzo.
Per approfondire Private Service Connect, consultare la pagina dedicata al prodotto.