1. Introduzione
In questo codelab eseguirai il deployment di un bilanciatore del carico del proxy TCP interno e di un gruppo di endpoint di rete (NEG) zonale, pubblicato come servizio di produzione PSC. Il NEG sarà costituito da una o più istanze di calcolo in GCP che ospitano autonomamente un database, ad esempio JIRA, Confluence, Sharepoint.
Private Service Connect è una funzionalità di networking di Google Cloud che consente ai consumer di accedere ai servizi gestiti privatamente dall'interno della propria rete VPC. Allo stesso modo, consente ai producer di servizi gestiti di ospitare questi servizi nella propria rete VPC o cross-cloud, offrendo una connessione privata ai propri consumer. Ad esempio, quando utilizzi Private Service Connect per accedere a un NEG zonale, tu sei il producer di servizi e Google (Agentspace) è il consumer di servizi.
Cosa imparerai a fare
- Requisiti di rete per Agentspace
- Best practice di networking di Agentspace
- Crea un servizio producer Private Service Connect
Che cosa ti serve
- Progetto Google Cloud con autorizzazioni di proprietario
2. Cosa creerai
Stabilirai una rete di producer, agentspace-psc-demo, per eseguire il deployment del bilanciatore del carico proxy TCP interno e del NEG zonale pubblicato come servizio tramite Private Service Connect (PSC).
3. Requisiti di rete
Di seguito è riportata la suddivisione dei requisiti di rete per la rete del produttore. Il consumatore in questo codelab è Agentspace.
Componenti | Descrizione |
VPC (agentspace-psc-demo) | VPC in modalità personalizzata |
Subnet NAT PSC | I pacchetti provenienti dalla rete VPC consumer vengono convertiti utilizzando il source NAT (SNAT) in modo che i loro indirizzi IP di origine originali vengano convertiti in indirizzi IP di origine dalla subnet NAT nella rete VPC del producer. PSC NAT supporta una subnet /29 per ogni collegamento del servizio. |
Subnet della regola di forwarding PSC | Utilizzato per allocare un indirizzo IP per il bilanciatore del carico del proxy TCP interno regionale.La subnet della regola di forwarding è considerata una subnet normale. |
Subnet NEG | Utilizzato per allocare un indirizzo IP per il gruppo di endpoint di rete da una subnet normale. |
Subnet solo proxy | A ognuno dei proxy del bilanciatore del carico viene assegnato un indirizzo IP interno. I pacchetti inviati da un proxy a una VM di backend o a un gruppo di endpoint di rete hanno un indirizzo IP di origine dalla subnet solo proxy.Una subnet /23 è consigliata , anche se è supportata la subnet minima /26. È necessaria una subnet proxy regionale per regione. |
Servizio di backend | Un servizio di backend funge da ponte tra il bilanciatore del carico e le risorse di backend. Nel tutorial, il servizio di backend è associato al NEG zonale. |
4. Best practice
- I NEG a livello di zona supportano una o più istanze GCE a livello di zona in base a GCE_VM_IP_PORT
- Abilita l'accesso globale nella regola di forwarding del producer prima di creare il collegamento del servizio.
- Abilita l'accesso globale durante la creazione dell'endpoint Agentspace.
- Il bilanciatore del carico proxy TCP interno supporta anche i gruppi di istanze gestite e non gestite.
- I bilanciatori del carico proxy TCP o passthrough di Google Cloud esistenti possono essere esposti come servizio produttore
5. Topologia del codelab
6. Configurazione e requisiti
Configurazione dell'ambiente autonoma
- Accedi alla console Google Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai già un account Gmail o Google Workspace, devi crearne uno.
- Il nome del progetto è il nome visualizzato per i partecipanti a questo progetto. È una stringa di caratteri non utilizzata dalle API di Google. Puoi sempre aggiornarlo.
- L'ID progetto è univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo l'impostazione). La console Cloud genera automaticamente una stringa univoca, di solito non ti interessa di cosa si tratta. Nella maggior parte dei codelab, dovrai fare riferimento all'ID progetto (in genere identificato come
PROJECT_ID
). Se non ti piace l'ID generato, puoi generarne un altro casuale. In alternativa, puoi provare a crearne uno e vedere se è disponibile. Non può essere modificato dopo questo passaggio e rimane per tutta la durata del progetto. - Per tua informazione, esiste un terzo valore, un numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
- Successivamente, devi abilitare la fatturazione in Cloud Console per utilizzare le risorse/API Cloud. Completare questo codelab non costa molto, se non nulla. Per arrestare le risorse ed evitare addebiti oltre a quelli previsti da questo tutorial, puoi eliminare le risorse che hai creato o il progetto. I nuovi utenti di Google Cloud possono usufruire del programma prova senza costi di 300$.
Avvia Cloud Shell
Sebbene Google Cloud possa essere gestito da remoto dal tuo laptop, in questo codelab utilizzerai Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.
Nella console Google Cloud, fai clic sull'icona di Cloud Shell nella barra degli strumenti in alto a destra:
Bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere un risultato simile a questo:
Questa macchina virtuale è caricata con tutti gli strumenti di sviluppo di cui avrai bisogno. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud, migliorando notevolmente le prestazioni di rete e l'autenticazione. Tutto il lavoro in questo codelab può essere svolto all'interno di un browser. Non devi installare nulla.
7. Prima di iniziare
Abilita API
In Cloud Shell, assicurati che l'ID progetto sia configurato:
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone1a=[YOUR-ZONE1a]
zone1b=[YOUR-ZONE1b]
echo $project
echo $region
echo $zone1a
echo $zone1b
Attiva tutti i servizi necessari:
gcloud services enable compute.googleapis.com
8. Crea rete VPC producer
Rete VPC
In Cloud Shell, esegui le seguenti operazioni:
gcloud compute networks create agentspace-psc-demo --subnet-mode custom
Crea subnet
La subnet PSC verrà associata al collegamento del servizio PSC ai fini della Network Address Translation.
In Cloud Shell, crea la subnet NAT PSC:
gcloud compute networks subnets create producer-psc-nat-subnet --network agentspace-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT
In Cloud Shell, crea la subnet della regola di forwarding del produttore:
gcloud compute networks subnets create producer-psc-fr-subnet --network agentspace-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access
In Cloud Shell, crea la subnet del gruppo di endpoint di rete:
gcloud compute networks subnets create neg-subnet --network agentspace-psc-demo --range 172.16.30.0/28 --region $region --enable-private-ip-google-access
In Cloud Shell, crea la subnet solo proxy regionale del produttore
gcloud compute networks subnets create $region-proxy-only-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=$region \
--network=agentspace-psc-demo \
--range=10.10.10.0/24
Prenota l'indirizzo IP del bilanciatore del carico
In Cloud Shell, prenota un indirizzo IP interno per il bilanciatore del carico:
gcloud compute addresses create zonal-neg-lb-ip \
--region=$region \
--subnet=producer-psc-fr-subnet
In Cloud Shell, visualizza l'indirizzo IP riservato.
gcloud compute addresses describe zonal-neg-lb-ip \
--region=$region | grep -i address:
Output di esempio:
gcloud compute addresses describe zonal-neg-lb-ip --region=$region | grep -i address:
address: 172.16.20.2
Configura il NEG a livello di zona
Nella sezione seguente, creerai un gruppo di endpoint di rete di zona contenente una o più combinazioni di indirizzo IP o indirizzo IP e porta di destinazione:
- L'indirizzo IPv4 interno principale di un'interfaccia di rete VM
- L'indirizzo IPv4 interno principale di un'interfaccia di rete VM più un numero di porta di destinazione
- Un indirizzo IPv4 interno dall'intervallo di indirizzi IP alias assegnato a un'interfaccia di rete VM
- Un indirizzo IPv4 interno dall'intervallo di indirizzi IP alias assegnato a un'interfaccia di rete VM più un numero di porta di destinazione
L'interfaccia di rete contenente l'endpoint GCE_VM_IP_PORT deve trovarsi nella subnet del NEG. Quando ometti un numero di porta da un endpoint GCE_VM_IP_PORT, Google Cloud utilizza il numero di porta predefinito del NEG per l'endpoint.
Nell'architettura di riferimento, le istanze GCE associate al NEG zonale sono costituite da:
- database-us-central1-a | us-central1-a | IP: 100.100.10.2 | Porta: 443
- database-us-central1-a | us-central1-b | IP: 100.100.10.3 | Porta: 443
- Nome subnet: database-subnet-1
Crea il NEG di zona per zone1a
Nella sezione seguente, creerai il gruppo di endpoint di rete per zona, ad esempio us-central1-a, e specificherai il nome della subnet utilizzata per creare l'istanza GCE. Nell'architettura di riferimento, il nome della subnet è database-subnet-1.
In Cloud Shell, crea un NEG di zona:
gcloud compute network-endpoint-groups create us-central-zonal-neg-1a \
--zone=$zone1a \
--network=agentspace-psc-demo \
--subnet=database-subnet-1 \
--default-port=443
In Cloud Shell, aggiorna il NEG zonale con l'IP:porta dell'istanza GCE di cui è stato eseguito il deployment in zone1a. Nell'architettura di riferimento, l'istanza GCE è 100.100.10.2 porta 443 di cui è stato eseguito il deployment nella zona us-central1-a.
gcloud compute network-endpoint-groups update us-central-zonal-neg-1a --zone=$zone1a --add-endpoint instance=database-us-central1-a,port=443
Crea il NEG a livello di zona per zone1b
Nella sezione seguente, creerai il gruppo di endpoint di rete per zona, ad esempio us-central1-b, e specificherai il nome della subnet utilizzata per creare l'istanza GCE. Nell'architettura di riferimento, il nome della subnet è database-subnet-1.
In Cloud Shell, crea un NEG di zona:
gcloud compute network-endpoint-groups create us-central-zonal-neg-1b \
--zone=$zone1b \
--network=agentspace-psc-demo \
--subnet=database-subnet-1 \
--default-port=443
In Cloud Shell, aggiorna il NEG zonale con l'IP:porta dell'istanza GCE di cui è stato eseguito il deployment in zone1b. Nell'architettura di riferimento, l'istanza GCE è 100.100.10.3 porta 443 di cui è stato eseguito il deployment nella zona us-central1-b.
gcloud compute network-endpoint-groups update us-central-zonal-neg-1b --zone=$zone1b --add-endpoint instance=database-us-central1-b,port=443
Crea un controllo di integrità a livello di regione
In Cloud Shell, crea un controllo di integrità che esegua il probe della porta del database on-premise, 443:
gcloud compute health-checks create tcp zonal-443-healthcheck \
--region=$region \
--port=443
Crea policy firewall di rete e regole firewall
In Cloud Shell, esegui le seguenti operazioni:
gcloud compute network-firewall-policies create agentspace-psc-demo-policy --global
gcloud compute network-firewall-policies associations create --firewall-policy agentspace-psc-demo-policy --network agentspace-psc-demo --name agentspace-psc-demo --global-firewall-policy
La seguente regola firewall consente il traffico dall'intervallo di subnet NAT PSC a tutte le istanze della rete.
In Cloud Shell, esegui le seguenti operazioni:
gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy agentspace-psc-demo-policy --description "allow traffic from PSC NAT subnet to GCE" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp
La seguente regola firewall consente il traffico dall'intervallo di probe del controllo di integrità a tutte le istanze della rete. Tieni presente che la porta del controllo di integrità e dell'applicazione devono corrispondere.
In Cloud Shell, esegui le seguenti operazioni:
gcloud compute network-firewall-policies rules create 2002 --action ALLOW --firewall-policy agentspace-psc-demo-policy --description "allow internal probe health check range to GCE" --direction INGRESS --src-ip-ranges 35.191.0.0/16,130.211.0.0/22 --global-firewall-policy --layer4-configs=tcp:443
La seguente regola firewall consente il traffico dall'intervallo della subnet solo proxy a tutte le istanze della rete. Tieni presente che la subnet proxy e la porta dell'applicazione devono corrispondere.
In Cloud Shell, esegui le seguenti operazioni:
gcloud compute network-firewall-policies rules create 2003 --action ALLOW --firewall-policy agentspace-psc-demo-policy --description "allow internal tcp proxy health check range to GCE" --direction INGRESS --src-ip-ranges 10.10.10.0/24 --global-firewall-policy --layer4-configs=tcp:443
9. Crea servizio producer
Crea i componenti del bilanciatore del carico
In Cloud Shell, crea un servizio di backend:
gcloud compute backend-services create producer-backend-svc --region=$region --load-balancing-scheme=INTERNAL_MANAGED --protocol=TCP --region=$region --health-checks=zonal-443-healthcheck --health-checks-region=$region
In Cloud Shell, associa il NEG zonale us-central-zonal-neg-1a al servizio di backend:
gcloud compute backend-services add-backend producer-backend-svc \
--network-endpoint-group=us-central-zonal-neg-1a \
--network-endpoint-group-zone=$zone1a \
--balancing-mode=CONNECTION \
--max-connections-per-endpoint=100 \
--region=$region
In Cloud Shell, associa il NEG zonale us-central-zonal-neg-1b al servizio di backend:
gcloud compute backend-services add-backend producer-backend-svc \
--network-endpoint-group=us-central-zonal-neg-1b \
--network-endpoint-group-zone=$zone1b \
--balancing-mode=CONNECTION \
--max-connections-per-endpoint=100 \
--region=$region
In Cloud Shell, crea un proxy TCP di destinazione per instradare le richieste al servizio di backend:
gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
--backend-service=producer-backend-svc \
--region=$region
Nella sintassi seguente, crea una regola di forwarding (bilanciatore del carico proxy TCP interno) con l'accesso globale abilitato.
In Cloud Shell, esegui le seguenti operazioni:
gcloud compute forwarding-rules create producer-zonal-neg-fr \
--load-balancing-scheme=INTERNAL_MANAGED \
--network-tier=PREMIUM \
--network=agentspace-psc-demo \
--subnet=producer-psc-fr-subnet \
--address=zonal-neg-lb-ip \
--target-tcp-proxy=producer-lb-tcp-proxy \
--target-tcp-proxy-region=$region \
--region=$region \
--allow-global-access \
--ports=443
Convalida l'integrità del backend
Convalida l'integrità (stato verde) del servizio di backend e delle relative istanze di Compute utilizzando la console Google Cloud nella sezione seguente. Vai a:
Servizi di rete → Bilanciamento del carico → Producer-backend-svc
Crea collegamento al servizio
Per pubblicare un servizio, devi creare un collegamento al servizio Private Service Connect. Puoi pubblicare il servizio con l'approvazione automatica o esplicita.
- Per pubblicare il servizio e consentire automaticamente a qualsiasi consumatore di connettersi, segui le istruzioni riportate in Pubblicare un servizio con approvazione automatica.
- Per pubblicare il servizio con l'approvazione esplicita del consumer, nelle impostazioni di connessione del collegamento al servizio, seleziona Accetta connessioni per i progetti selezionati e lascia vuoto il campo Progetti accettati.
- Dopo aver generato l'allegato del servizio, gli endpoint consumer che richiedono l'accesso al servizio producer inizialmente entrano in uno stato in attesa. Per autorizzare la connessione, il produttore deve quindi accettare il progetto da cui ha avuto origine la richiesta dell'endpoint consumer.
In Cloud Shell, crea l'allegato di servizio cc-database1-svc-attachment con approvazione automatica:
gcloud compute service-attachments create zonal-database1-svc-attachment --region=$region --producer-forwarding-rule=producer-zonal-neg-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet
Successivamente, ottieni e annota l'allegato di servizio elencato nell'URI selfLink che inizia con i progetti per configurare l'endpoint PSC in Agentspace.
selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/zonal-database1-svc-attachment
In Cloud Shell, esegui le seguenti operazioni:
gcloud compute service-attachments describe zonal-database1-svc-attachment --region=$region
Output previsto di esempio:
connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2025-07-12T16:00:22.429-07:00'
description: ''
enableProxyProtocol: false
fingerprint: zOpeRQnPWSc=
id: '1784245893044590569'
kind: compute#serviceAttachment
name: zonal-database1-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project-svc4/regions/us-central1/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
high: '119824781489996776'
low: '1784245893044590569'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project-svc4/regions/us-central1
selfLink: https://www.googleapis.com/compute/v1/projects/$project-svc4/regions/us-central1/serviceAttachments/zonal-database1-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project-svc4/regions/us-central1/forwardingRules/producer-zonal-neg-fr
In Cloud Console, vai a:
Servizi di rete → Private Service Connect → Servizi pubblicati
10. Stabilire una connessione endpoint PSC in Agentspace
Associa l'URI del collegamento del servizio producer ad Agentspace, assicurandoti che sia selezionato l'accesso globale. Di seguito è riportato un esempio di attivazione dell'accesso globale con l'allegato di servizio dell'architettura di riferimento.
Per finalizzare il networking privato, consulta le origini dati di terze parti di Agentspace per ulteriori istruzioni.
Convalida l'endpoint PSC in Cloud Console
Per confermare una connessione PSC riuscita tra Agentspace (il consumatore) e il produttore, verifica il progetto tenant Agentspace collegato al servizio del produttore. Puoi trovarlo in "Progetti collegati". L'ID progetto tenant viene assegnato in modo casuale, ma termina sempre con "tp".
Dalla console Cloud puoi convalidare la connessione PSC. In Cloud Console, vai a:
Servizi di rete → Private Service Connect → Servizio pubblicato, poi seleziona il servizio zonal-database1-svc-attachment.
11. Esegui la pulizia
Elimina i componenti del lab da un singolo terminale Cloud Shell
gcloud compute service-attachments delete zonal-database1-svc-attachment --region=$region -q
gcloud compute forwarding-rules delete producer-zonal-neg-fr --region=$region -q
gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q
gcloud compute backend-services delete producer-backend-svc --region=$region -q
gcloud compute network-firewall-policies rules delete 2001 --firewall-policy agentspace-psc-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies rules delete 2002 --firewall-policy agentspace-psc-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies rules delete 2003 --firewall-policy agentspace-psc-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies associations delete --firewall-policy=agentspace-psc-demo-policy --name=agentspace-psc-demo --global-firewall-policy -q
gcloud compute network-firewall-policies delete agentspace-psc-demo-policy --global -q
gcloud compute network-endpoint-groups delete us-central-zonal-neg-1a --zone=$zone1a -q
gcloud compute network-endpoint-groups delete us-central-zonal-neg-1b --zone=$zone1b -q
gcloud compute addresses delete zonal-neg-lb-ip --region=$region -q
gcloud compute networks subnets delete $region-proxy-only-subnet --region=$region -q
gcloud compute networks subnets delete producer-psc-nat-subnet --region=$region -q
gcloud compute networks subnets delete producer-psc-fr-subnet --region=$region -q
gcloud compute networks subnets delete neg-subnet --region=$region -q
gcloud compute health-checks delete zonal-443-healthcheck --region=us-central1 -q
gcloud compute networks delete agentspace-psc-demo -q
12. Complimenti
Congratulazioni, hai configurato e pubblicato correttamente un servizio producer con Private Service Connect.
Hai creato l'infrastruttura del produttore, hai imparato a creare un NEG zonale, un servizio del produttore e ad associare l'allegato del servizio ad Agentspace.
Cosmopup pensa che i codelab siano fantastici.
Passaggi successivi
Dai un'occhiata ad alcuni di questi codelab…
- Utilizzo di Private Service Connect per pubblicare e utilizzare servizi
- Accesso a tutti i codelab di Private Service Connect pubblicati