1. Introduzione
Con Private Service Connect, i producer di servizi possono esporre i servizi in un ambiente VPC tramite un collegamento al servizio e consentire ai consumer in un altro ambiente VPC di accedere a questi servizi tramite un endpoint Private Service Connect. A volte questi servizi di produzione sono progettati come cluster di VM, con ogni VM che espone gli stessi servizi su numeri di porta identici. In precedenza, questi progetti di servizio richiedevano la deployment di più endpoint Private Service Connect sul lato consumer o l'utilizzo dell'inoltro IP sul lato producer per assicurarsi che la VM producer corretta fosse presa di mira.
Private Service Connect ora può scegliere come target in modo nativo la destinazione corretta utilizzando il mapping delle porte. In questo lab, scoprirai i casi d'uso in cui è richiesta questa funzionalità e come eseguire il deployment di un NEG di mappatura delle porte in un carico di lavoro Private Service Connect.
Cosa imparerai a fare
- Casi d'uso del mapping delle porte Private Service Connect
- Vantaggi principali del mapping delle porte PSC
- Requisiti di rete
- Crea un servizio producer Private Service Connect utilizzando il mapping delle porte.
- Crea un endpoint Private Service Connect
- Effettua chiamate tramite un endpoint Private Service Connect a un servizio producer
Che cosa ti serve
- Progetto Google Cloud con autorizzazioni di proprietario
2. Casi d'uso del mapping delle porte Private Service Connect
La funzionalità di mappatura delle porte utilizza un gruppo di endpoint di rete (NEG) di mappatura delle porte specifico per i casi d'uso PSC.
I tipi più comuni di produttori che possono trarre vantaggio dall'utilizzo del mapping delle porte sono i produttori di database NoSQL e i produttori Kafka. Tuttavia, qualsiasi produttore che richieda un cluster di VM che espongono gli stessi servizi su porte identiche con requisiti specifici di mapping delle VM può utilizzare questa funzionalità.
Il producer definisce il mapping tra una porta client e una VM producer + porta di destinazione. Il produttore deve quindi condividere queste informazioni con il consumatore. Il consumer utilizza le porte predefinite per identificare in modo univoco la VM del produttore e la porta di destinazione da raggiungere. La porta utilizzata dal consumer è diversa da quella utilizzata dal producer.
Vantaggi principali del mapping delle porte PSC
- Semplice:i producer eseguono il deployment dei componenti PSC con una mappatura delle porte e i consumer eseguono il deployment di un endpoint PSC. PSC gestisce automaticamente la traduzione degli indirizzi di rete.
- Conveniente:non richiede risorse PSC aggiuntive o cicli di CPU della VM del produttore. Il prezzo è lo stesso degli altri tipi di implementazioni di PSC
- Prestazioni elevate:il mapping delle porte offre la stessa velocità effettiva della linea e la stessa bassa latenza delle altre modalità PSC
- Scalabile ed efficiente in termini di IP:un indirizzo IP del VPC consumer può accedere a un massimo di 1000 VM producer e 1000 mapping delle porte
3. Requisiti di rete
- Il mapping delle porte richiede l'utilizzo di un bilanciatore del carico di rete passthrough interno come bilanciatore del carico del produttore.
- Solo gli endpoint PSC possono essere utilizzati con la mappatura delle porte (non i backend PSC o l'interfaccia PSC).
- I NEG mappatura porte sono costrutti regionali.
- I NEG di mappatura delle porte possono essere utilizzati solo in una connessione PSC. Non funzioneranno se la VM client chiama direttamente la regola di forwarding del bilanciatore del carico del producer. Ciò si riflette nel modo in cui viene testato il servizio di produzione in questo codelab.
- L'endpoint PSC e lo stack di servizi del producer devono trovarsi in VPC diversi.
4. Topologia del codelab

Nel VPC del producer verranno create due VM che eseguiranno due server web ciascuna, uno in esecuzione sulla porta 1000 e l'altro sulla porta 2000. Testeremo ogni servizio prima di configurare il NEG Portmap, il bilanciatore del carico di rete passthrough interno e il collegamento del servizio.
Nella rete VPC consumer, configureremo un endpoint PSC e testeremo la connettività al servizio producer da una VM client.
5. Configurazione e requisiti
Configurazione dell'ambiente autonomo
- Accedi alla console Google Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora 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 l'ID generato non ti piace, 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 in questo tutorial, puoi eliminare le risorse che hai creato o il progetto. I nuovi utenti di Google Cloud possono beneficiare 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 per sviluppatori di cui avrai bisogno. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud, migliorando notevolmente le prestazioni e l'autenticazione della rete. Tutto il lavoro in questo codelab può essere svolto all'interno di un browser. Non devi installare nulla.
6. 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=us-central1 zone=us-central1-a echo $project echo $region echo $zone
Attiva tutti i servizi necessari
gcloud services enable compute.googleapis.com
7. Crea rete VPC producer
Rete VPC
Da Cloud Shell
gcloud compute networks create producer-vpc --subnet-mode custom
Crea subnet
Da Cloud Shell
gcloud compute networks subnets create producer-service-subnet --network producer-vpc --range 10.0.0.0/24 --region $region --enable-private-ip-google-access gcloud compute networks subnets create psc-nat-subnet --network producer-vpc --range 10.100.100.0/24 --region $region --purpose=PRIVATE_SERVICE_CONNECT
La subnet PSC verrà associata al collegamento del servizio PSC ai fini della Network Address Translation. Per i casi d'uso di produzione, le dimensioni di questa subnet devono essere adeguate per supportare la quantità di traffico in entrata da tutti gli endpoint PSC collegati. Per saperne di più, consulta la documentazione sul dimensionamento della subnet NAT PSC.
Crea policy firewall di rete e regole firewall
Da Cloud Shell
gcloud compute network-firewall-policies create producer-vpc-policy --global gcloud compute network-firewall-policies associations create --firewall-policy producer-vpc-policy --network producer-vpc --name network-producer-vpc --global-firewall-policy
Per consentire a IAP di connettersi alle tue istanze VM, crea una regola firewall che:
- Si applichi a tutte le istanze VM a cui vuoi accedere tramite IAP.
- Consente il traffico in entrata dall'intervallo IP 35.235.240.0/20. Questo intervallo contiene tutti gli indirizzi IP che utilizzati da IAP per l'inoltro TCP.
Da Cloud Shell
gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy producer-vpc-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22 --global-firewall-policy
La seguente regola firewall consente il traffico sulle porte TCP 1000-2000 dalla subnet PSC a tutte le istanze della rete. In un ambiente di produzione, questa regola firewall deve essere limitata solo alle istanze associate al servizio producer specifico.
Da Cloud Shell
gcloud compute network-firewall-policies rules create 2000 --action ALLOW --firewall-policy producer-vpc-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 10.100.100.0/24 --layer4-configs tcp:1000-2000 --global-firewall-policy
La seguente regola firewall consente tutto il traffico all'interno della subnet dei servizi sulle porte TCP 1000-2000. Questa regola verrà utilizzata per verificare che il nostro servizio di produzione funzioni correttamente.
Da Cloud Shell
gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy producer-vpc-policy --description "allow traffic within the service subnet" --direction INGRESS --src-ip-ranges 10.0.0.0/24 --layer4-configs tcp:1000-2000 --global-firewall-policy
Crea e configura le VM di produzione
Crea VM
Da Cloud Shell
gcloud compute instances create portmap-vm1 --zone=$zone --subnet=producer-service-subnet --no-address gcloud compute instances create portmap-vm2 --zone=$zone --subnet=producer-service-subnet --no-address gcloud compute instances create test-client-vm --zone=$zone --subnet=producer-service-subnet --no-address
Nella sezione seguente, avvia il server HTTP sulle porte 1000 e 2000 su ogni VM Producer.
Configura le VM
Da Cloud Shell
gcloud compute ssh --zone $zone "portmap-vm1" --tunnel-through-iap --project $project
In Cloud Shell dalla sessione portmap-vm1
mkdir 1000 cd 1000 echo "portmap-vm1 1000">index.html sudo python3 -m http.server 1000 & cd .. mkdir 2000 cd 2000 echo "portmap-vm1 2000">index.html sudo python3 -m http.server 2000 &
Apri una nuova finestra di Cloud Shell
Inizia reimpostando le variabili. In Cloud Shell
project=[YOUR-PROJECT-ID] region=us-central1 zone=us-central1-a echo $project echo $region echo $zone gcloud compute ssh --zone $zone "portmap-vm2" --tunnel-through-iap --project $project
In Cloud Shell dalla sessione portmap-vm2
mkdir 1000 cd 1000 echo "portmap-vm2 1000">index.html sudo python3 -m http.server 1000 & cd .. mkdir 2000 cd 2000 echo "portmap-vm2 2000">index.html sudo python3 -m http.server 2000 &
8. Test Producer Service
Per prima cosa, dobbiamo ottenere gli indirizzi IP delle istanze portmap. Prendi nota di entrambi gli indirizzi IP.
Apri una nuova finestra di Cloud Shell
Inizia reimpostando le variabili. In Cloud Shell
project=[YOUR-PROJECT-ID] region=us-central1 zone=us-central1-a echo $project echo $region echo $zone gcloud compute instances describe portmap-vm1 \ --format='get(networkInterfaces[0].networkIP)' --zone $zone gcloud compute instances describe portmap-vm2\ --format='get(networkInterfaces[0].networkIP)' --zone $zone
Accedi all'istanza di test. In Cloud Shell
gcloud compute ssh --zone $zone "test-client-vm" --tunnel-through-iap --project $project curl [portmap-vm1 IP]:1000
Output previsto:
portmap-vm1 1000
In Cloud Shell
curl [portmap-vm1 IP]:2000
Output previsto:
portmap-vm1 2000
In Cloud Shell
curl [portmap-vm2 IP]:1000
Output previsto:
portmap-vm2 1000
In Cloud Shell
curl [portmap-vm2 IP]:2000
Output previsto:
portmap-vm2 2000
Esci da test-client-vm
9. Crea il servizio di produzione con il NEG Portmap
Crea i componenti del bilanciatore del carico
Da Cloud Shell
gcloud compute network-endpoint-groups create portmap-neg --region=$region --network=producer-vpc --subnet=producer-service-subnet --network-endpoint-type=GCE_VM_IP_PORTMAP
Aggiungi endpoint al NEG Portmap per creare il mapping dalla porta client alla porta del produttore. Il produttore crea questa mappatura e avrà il proprio metodo per comunicare queste informazioni ai consumatori. La mappatura delle porte specifica non viene condivisa tramite PSC.
In Cloud Shell
gcloud compute network-endpoint-groups update portmap-neg --region=$region --add-endpoint=client-destination-port=1001,instance=projects/$project/zones/$zone/instances/portmap-vm1,port=1000 --add-endpoint=client-destination-port=1002,instance=projects/$project/zones/$zone/instances/portmap-vm1,port=2000 --add-endpoint=client-destination-port=1003,instance=projects/$project/zones/$zone/instances/portmap-vm2,port=1000 --add-endpoint=client-destination-port=1004,instance=projects/$project/zones/$zone/instances/portmap-vm2,port=2000
Completa la creazione del bilanciatore del carico.
In Cloud Shell
gcloud compute backend-services create portmap-bes --load-balancing-scheme=internal --region=$region --network=producer-vpc gcloud compute backend-services add-backend portmap-bes --network-endpoint-group=portmap-neg --network-endpoint-group-region=$region gcloud compute forwarding-rules create portmap-fr --load-balancing-scheme=INTERNAL --network=producer-vpc --subnet=producer-service-subnet --ports=ALL --region=$region --backend-service=portmap-bes
Crea collegamento al servizio
Da Cloud Shell
gcloud compute service-attachments create portmap-service-attachment --region=$region --producer-forwarding-rule=portmap-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=psc-nat-subnet
Successivamente, recupera e annota l'URI del collegamento al servizio per configurare l'endpoint PSC nell'ambiente consumer.
In Cloud Shell
gcloud compute service-attachments describe portmap-service-attachment --region=$region
Output previsto di esempio
connectionPreference: ACCEPT_AUTOMATIC creationTimestamp: '2024-07-19T10:02:29.432-07:00' description: '' enableProxyProtocol: false fingerprint: LI8D6JNQsLA= id: '6207474793859982026' kind: compute#serviceAttachment name: portmap-service-attachment natSubnets: - https://www.googleapis.com/compute/v1/projects/$project/regions/$zone/subnetworks/psc-nat-subnet pscServiceAttachmentId: high: '94288091358954472' low: '6207474793859982026' reconcileConnections: false region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/portmap-service-attachment targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/portmap-fr
10. Crea rete VPC consumer
Rete VPC
Da Cloud Shell
gcloud compute networks create consumer-vpc --subnet-mode custom
Crea subnet
Da Cloud Shell
gcloud compute networks subnets create consumer-client-subnet --network consumer-vpc --range=10.0.0.0/24 --region $region --enable-private-ip-google-access
Crea policy firewall di rete e regole firewall
Da Cloud Shell
gcloud compute network-firewall-policies create consumer-vpc-policy --global gcloud compute network-firewall-policies associations create --firewall-policy consumer-vpc-policy --network consumer-vpc --name network-consumer-vpc --global-firewall-policy gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy consumer-vpc-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22 --global-firewall-policy
Per la rete del consumatore è necessario solo l'accesso SSH da IAP.
11. Crea VM, endpoint PSC e verifica la connettività
A questo punto, dovrebbero essere aperte tre finestre di Cloud Shell. Una deve avere una sessione aperta con portmap-vm1. Una deve avere una sessione aperta con portmap-vm2 e l'altra deve essere la sessione di lavoro.
Crea una VM di test
Da Cloud Shell
gcloud compute instances create consumer-client-vm --zone $zone --subnet=consumer-client-subnet --no-address
Crea un endpoint PSC
Da Cloud Shell
gcloud compute addresses create psc-endpoint-ip --region=$region --subnet=consumer-client-subnet --addresses 10.0.0.10 gcloud compute forwarding-rules create psc-portmap-endpoint --region=$region --network=consumer-vpc --address=psc-endpoint-ip --target-service-attachment=[SERVICE ATTACHMENT URI]
Test di connettività
Da Cloud Shell
gcloud compute ssh --zone $zone "consumer-client-vm" --tunnel-through-iap --project $project curl 10.0.0.10:1001
Risultato previsto
portmap-vm1 1000
Da Cloud Shell
curl 10.0.0.10:1002
Risultato previsto
portmap-vm1 2000
Da Cloud Shell
curl 10.0.0.10:1003
Risultato previsto
portmap-vm2 1000
Da Cloud Shell
curl 10.0.0.10:1004
Risultato previsto
portmap-vm2 2000
12. Procedura di pulizia
Esci dall'istanza VM (tutte le finestre)
exit
Elimina i componenti del lab da un singolo terminale Cloud Shell
gcloud compute forwarding-rules delete psc-portmap-endpoint --region=$region -q gcloud compute addresses delete psc-endpoint-ip --region=$region -q gcloud compute instances delete consumer-client-vm --zone=$zone -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy=consumer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=consumer-vpc-policy --name=network-consumer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete consumer-vpc-policy --global -q gcloud compute networks subnets delete consumer-client-subnet --region=$region -q gcloud compute networks delete consumer-vpc -q gcloud compute service-attachments delete portmap-service-attachment --region=$region -q gcloud compute forwarding-rules delete portmap-fr --region=$region -q gcloud compute backend-services delete portmap-bes --region=$region -q gcloud compute network-endpoint-groups delete portmap-neg --region=$region -q gcloud compute instances delete test-client-vm --zone=$zone -q gcloud compute instances delete portmap-vm2 --zone=$zone -q gcloud compute instances delete portmap-vm1 --zone=$zone -q gcloud compute network-firewall-policies rules delete 2001 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy --name=network-producer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete producer-vpc-policy --global -q gcloud compute networks subnets delete psc-nat-subnet --region $region -q gcloud compute networks subnets delete producer-service-subnet --region $region -q gcloud compute networks delete producer-vpc -q
13. Complimenti!
Congratulazioni per aver completato il codelab.
Argomenti trattati
- Casi d'uso del mapping delle porte Private Service Connect
- Vantaggi principali del mapping delle porte PSC
- Requisiti di rete
- Crea un servizio producer Private Service Connect utilizzando il mapping delle porte.
- Crea un endpoint Private Service Connect
- Effettua chiamate tramite un endpoint Private Service Connect a un servizio producer