1. Introduzione
Private Service Connect consente a un producer di servizi di offrire servizi privatamente a un consumer di servizi. Private Service Connect offre i seguenti vantaggi:
- Una rete VPC del produttore di servizi può supportare più di un consumer di servizi.
- Ogni consumer si connette a un indirizzo IP interno che definisce. Private Service Connect esegue la conversione degli indirizzi di rete (NAT) per instradare la richiesta al producer di servizi.

Figura 2. Private Service Connect utilizza endpoint e collegamenti di servizio per consentire ai consumer di servizi di inviare traffico dalla rete VPC del consumer ai servizi nella rete VPC del producer di servizi (fai clic per ingrandire).
Cosa imparerai a fare
- Vantaggi di Private Service Connect
- Concetti chiave per i consumatori di servizi
- Concetti chiave per i producer di servizi
- Crea un ambiente di produzione
- Esporre il servizio (ambiente producer) tramite un collegamento del servizio
- Creare un ambiente consumer
- Crea una regola di forwarding nella rete consumer
- Convalida l'accesso dei consumatori
- Abilita il controllo dell'accesso ai criteri
- Utilizza una regola firewall in uscita per bloccare l'accesso a una regola di inoltro consumer
Che cosa ti serve
- Conoscenza del deployment di cluster e servizi GKE
- Conoscenza dei bilanciatori del carico interni
- Possibilità di creare VPC in due progetti
- Possibilità di creare un cluster GKE
2. Vantaggi di Private Service Connect
Con PSC, hai diversi vantaggi rispetto all'utilizzo del peering VPC:
Maggiore controllo dello spazio IP privato
- In qualità di consumer di servizi, puoi controllare l'indirizzo IP privato utilizzato per connetterti al servizio gestito a cui vuoi accedere.
- In qualità di consumer di servizi, non devi preoccuparti di riservare intervalli di indirizzi IP privati per i servizi di backend utilizzati nel tuo VPC. Per connetterti ai servizi del producer, devi solo scegliere un indirizzo IP dalla tua subnet.
- In qualità di produttore di servizi, puoi scegliere di implementare un modello multi-tenant, in cui il tuo VPC contiene servizi che gestiscono più VPC consumer. I consumatori con intervalli di subnet sovrapposti non sono più un problema.
- In qualità di fornitore di servizi, puoi scalare il tuo servizio al numero di istanze VM necessario, senza dover contattare il tuo consumatore per ottenere altri indirizzi IP.
Maggiore sicurezza e isolamento
- In qualità di consumatore di servizi, solo tu puoi avviare la comunicazione con il produttore di servizi. Questa connettività unidirezionale semplifica notevolmente la configurazione del firewall, ma riduce anche il rischio di traffico non autorizzato proveniente dal service producer.
- In qualità di produttore di servizi, non devi modificare le regole firewall in base agli intervalli di subnet nel VPC del consumer. Puoi semplicemente creare regole firewall per l'intervallo di indirizzi IP NAT configurato per il tuo servizio.
Migliore scalabilità
- PSC consente una progettazione altamente scalabile supportando migliaia di consumer e consente ai produttori di servizi di offrire servizi multi-tenant o single-tenant altamente scalabili.
- In qualità di consumer di servizi che utilizza Private Service Connect, puoi creare le risorse necessarie nel tuo VPC. La scalabilità non è influenzata dal numero di queste risorse create nel VPC producer.
3. Concetti chiave per i consumatori di servizi
Puoi utilizzare gli endpoint Private Service Connect per utilizzare servizi esterni alla tua rete VPC. I consumer di servizi creano endpoint Private Service Connect che si connettono a un servizio di destinazione.
Endpoint
Utilizzi gli endpoint di Private Service Connect per connetterti a un servizio di destinazione. Gli endpoint hanno un indirizzo IP interno nella tua rete VPC e si basano sulla risorsa regola di forwarding.
Invii traffico all'endpoint, che lo inoltra a destinazioni esterne alla tua rete VPC.
Obiettivi
Gli endpoint Private Service Connect hanno una destinazione, ovvero il servizio a cui vuoi connetterti:
- Un bundle di API:
- Tutte le API: la maggior parte delle API di Google
- VPC-SC: API supportate dai Controlli di servizio VPC
- Un servizio pubblicato in un'altra rete VPC. Questo servizio può essere gestito dalla tua organizzazione o da una terza parte.
Servizio pubblicato
Per connettere l'endpoint al servizio di un produttore di servizi, devi disporre del collegamento al servizio per il servizio. L'URI del collegamento al servizio ha questo formato: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
4. Concetti chiave per i producer di servizi
Per rendere disponibile un servizio ai consumer, crei una o più subnet dedicate da utilizzare per la conversione degli indirizzi di rete (NAT) degli indirizzi IP dei consumer. Poi crei un collegamento del servizio che fa riferimento a queste subnet.
Subnet Private Service Connect
Per esporre un servizio, il producer di servizi crea prima una o più subnet con lo scopo Private Service Connect.
Quando viene inviata una richiesta da una rete VPC consumer, l'indirizzo IP di origine del consumer viene convertito utilizzando la NAT di origine (SNAT) in un indirizzo IP selezionato da una delle subnet Private Service Connect.
Se vuoi conservare le informazioni sull'indirizzo IP della connessione consumer, consulta Visualizzare le informazioni sulla connessione consumer.
Queste subnet non possono essere utilizzate per risorse come istanze VM o regole di forwarding. Le subnet vengono utilizzate solo per fornire indirizzi IP per SNAT delle connessioni in entrata dei consumatori.
La subnet Private Service Connect deve contenere almeno un indirizzo IP per ogni 63 VM consumer,in modo che a ogni VM consumer vengano allocati 1024 tuple di origine per la conversione degli indirizzi di rete.
La dimensione minima per una subnet Private Service Connect è /24.
Allegati di servizio
I producer di servizi espongono il proprio servizio tramite un collegamento di servizio.
- Per esporre un servizio, un produttore di servizi crea un collegamento al servizio che fa riferimento alla regola di forwarding del bilanciatore del carico del servizio.
- Per accedere a un servizio, un consumer di servizi crea un endpoint che fa riferimento al collegamento del servizio.
Preferenze di connessione
Quando crei un servizio, scegli come renderlo disponibile. Le opzioni disponibili sono due:
- Accetta automaticamente le connessioni per tutti i progetti: qualsiasi consumer di servizi può configurare un endpoint e connettersi automaticamente al servizio.
- Accetta connessioni per i progetti selezionati: i consumer di servizi configurano un endpoint per connettersi al servizio e il producer di servizi accetta o rifiuta le richieste di connessione.
Requisiti e limitazioni
- Si applicano le limitazioni per Private Service Connect.
- Puoi creare un collegamento del servizio in GKE versione 1.21.4-gke.300 e successive.
- Non puoi utilizzare la stessa subnet in più configurazioni di collegamento del servizio.
- Devi creare un servizio GKE che utilizzi un bilanciatore del carico TCP/UDP interno.
5. Ambiente di test
La rete consumer è costituita da un indirizzo IP statico utilizzato per generare richieste al producer di servizi, oltre al collegamento di servizio di destinazione che esegue il mapping al collegamento di servizio del producer (servizio pubblicato).

Ora diamo un'occhiata alla rete dei produttori. Nota come la rete del producer non abbia un mapping alla rete dei consumer. Al contrario, la rete del producer contiene un collegamento del servizio (servizio pubblicato) utilizzato dal consumer per i servizi. Il collegamento di servizio del producer è esposto da un bilanciamento del carico interno L4 di GKE Ingress (servizio pubblicato) che consente la comunicazione con i pod GKE e le applicazioni associate.
La subnet NAT viene utilizzata quando viene inviata una richiesta da una rete VPC consumer, l'indirizzo IP di origine del consumer viene convertito utilizzando NAT di origine (SNAT) in un indirizzo IP selezionato da una delle subnet Private Service Connect.
Queste subnet non possono essere utilizzate per risorse come istanze VM o regole di forwarding. Le subnet vengono utilizzate solo per fornire indirizzi IP per SNAT delle connessioni in entrata dei consumatori.
Per scoprire di più su L4ILB per GKE Private Service Connect e ottenere l'accesso diretto ai contenuti utilizzati per creare questo lab, consulta quanto segue.
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 e puoi aggiornarla in qualsiasi momento.
- L'ID progetto deve essere univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo essere stato impostato). Cloud Console genera automaticamente una stringa univoca, di solito non ti interessa di cosa si tratta. Nella maggior parte dei codelab, devi fare riferimento all'ID progetto (che in genere è identificato come
PROJECT_ID), quindi, se non ti piace, generane un altro casuale oppure puoi provare il tuo e vedere se è disponibile. Viene "congelato" dopo la creazione del progetto. - 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. L'esecuzione di questo codelab non dovrebbe costare molto, se non nulla. Per arrestare le risorse in modo da non incorrere in costi di fatturazione al termine di questo tutorial, segui le istruzioni di "pulizia" riportate alla fine del codelab. 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 GCP, 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 di questo lab può essere svolto semplicemente con un browser.
6. Prima di iniziare
Il codelab richiede due progetti, anche se non è un requisito per PSC. Prendi nota dei riferimenti per supportare uno o più progetti.
Singolo progetto: aggiorna il progetto per supportare la rete di produttori e consumatori
In Cloud Shell, assicurati che l'ID progetto sia configurato.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME consumerproject=YOUR-PROJECT-NAME echo $prodproject echo $consumerproject
Più progetti: aggiorna il progetto per supportare la rete del produttore
In Cloud Shell, assicurati che l'ID progetto sia configurato.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME echo $prodproject
Tieni presente la seguente convenzione del codice di colorazione:

7. Crea la rete VPC producer

Rete VPC
Da Cloud Shell
gcloud compute networks create gke-producer-l4-vpc --project=$prodproject --subnet-mode=custom
Crea la subnet del cluster GKE
Da Cloud Shell
gcloud compute networks subnets create node-subnet1 --project=$prodproject --range=192.168.10.0/24 --network=gke-producer-l4-vpc --region=us-central1 --secondary-range=pod=10.10.10.0/24,service=10.10.20.0/24 --enable-private-ip-google-access
Crea un cluster GKE
Da Cloud Shell
gcloud container clusters create gke-psc-l4 \
--release-channel=rapid \
--enable-ip-alias \
--zone=us-central1-a \
--network gke-producer-l4-vpc \
--num-nodes 1 \
--subnetwork node-subnet1 \
--cluster-secondary-range-name pod \
--services-secondary-range-name service
Crea una subnet per Private Service Connect (subnet NAT)
Devi creare una o più subnet dedicate da utilizzare con Private Service Connect. Se utilizzi la console Google Cloud per pubblicare un servizio, puoi creare le subnet durante questa procedura.
Per informazioni sulle subnet Private Service Connect, consulta Subnet Private Service Connect.
Da Cloud Shell
gcloud beta compute networks subnets create gke-nat-subnet \
--project $prodproject \
--network gke-producer-l4-vpc \
--region us-central1 \
--range 100.100.10.0/24 \
--purpose PRIVATE_SERVICE_CONNECT
8. Esegui il deployment di un workload e di servizi
Il seguente manifest descrive un deployment che esegue un'immagine container di esempio dell'applicazione web. Salva il manifest come my-deployment.yaml da Cloud Shell
apiVersion: apps/v1
kind: Deployment
metadata:
name: psc-ilb
spec:
replicas: 3
selector:
matchLabels:
app: psc-ilb
template:
metadata:
labels:
app: psc-ilb
spec:
containers:
- name: whereami
image: gcr.io/google-samples/whereami:v1.2.1
ports:
- name: http
containerPort: 8080
readinessProbe:
httpGet:
path: /healthz
port: 8080
scheme: HTTP
initialDelaySeconds: 5
timeoutSeconds: 1
Applica il manifest al cluster da Cloud Shell
kubectl apply -f my-deployment.yaml
Creare un servizio
Il seguente manifest descrive un servizio che crea un bilanciatore del carico TCP/UDP interno sulla porta TCP 8080. Salva il manifest come my-service.yaml da Cloud Shell.
apiVersion: v1
kind: Service
metadata:
name: gke-l4-psc
annotations:
networking.gke.io/load-balancer-type: "Internal"
spec:
type: LoadBalancer
selector:
app: psc-ilb
ports:
- port: 80
targetPort: 8080
protocol: TCP
Applica il manifest al cluster da Cloud Shell
kubectl apply -f my-service.yaml
Create ServiceAttachment
Il seguente manifest descrive un ServiceAttachment che espone il servizio che hai creato ai consumer di servizi. Salva il manifest come my-psc.yaml da Cloud Shell.
apiVersion: networking.gke.io/v1beta1 kind: ServiceAttachment metadata: name: emoji-sa namespace: default spec: connectionPreference: ACCEPT_AUTOMATIC natSubnets: - gke-nat-subnet proxyProtocol: false resourceRef: kind: Service name: gke-l4-psc
Applica il manifest al cluster da Cloud Shell
kubectl apply -f my-psc.yaml
ServiceAttachment ha i seguenti campi:
- connectionPreference:la preferenza di connessione che determina la modalità di connessione dei clienti al servizio. Puoi utilizzare l'approvazione automatica del progetto utilizzando ACCEPT_AUTOMATIC o l'approvazione esplicita del progetto utilizzando ACCEPT_MANUAL. Per saperne di più, consulta Pubblicazione di servizi tramite Private Service Connect.
- natSubnets: un elenco di nomi di risorse di subnet da utilizzare per l'allegato di servizio.
- proxyProtocol: se impostato su true, l'IP di origine del consumer e l'ID connessione Private Service Connect sono disponibili nelle richieste. Questo campo è facoltativo e viene impostato su false come valore predefinito se non viene fornito.
- consumerAllowList:l'elenco dei progetti consumer autorizzati a connettersi a ServiceAttachment. Questo campo può essere utilizzato solo quando connectionPreference è ACCEPT_MANUAL. Per ulteriori informazioni su questo campo e altre opzioni, consulta Pubblicazione di servizi tramite Private Service Connect.
Convalida del produttore
Visualizzare i dettagli del service attachment
Puoi visualizzare i dettagli di un ServiceAttachment utilizzando il seguente comando da Cloud Shell
kubectl describe serviceattachment emoji-sa
Visualizza il bilanciamento del carico interno L4 di GKE
Nella console Google Cloud, vai a Servizi di rete → Bilanciamento del carico → Frontend.
Identifica l'indirizzo IP frontend che rientra nella subnet del nodo definita in precedenza 192.168.10.0/24. Tieni presente lo screenshot riportato di seguito. Il tuo indirizzo IP potrebbe essere diverso.

Visualizzare il servizio pubblicato
Nella console Google Cloud, vai a Servizi di rete → Private Service Connect → Servizi pubblicati.
Identifica il servizio con la rete utilizzata nel lab, gke-producer-l4-vpc,,nota lo screenshot di seguito, anche se i valori di Servizio e Destinazione potrebbero differire

Fai clic sul nome del servizio che ti porta alla schermata seguente, prendi nota dei dettagli dell'allegato di servizio compilati in Informazioni di base. Tieni presente anche che "Progetti collegati" è vuoto perché il consumer non si è ancora registrato al servizio. ACCETTA e RIFIUTA rimarranno disattivati poiché Preferenza di connessione è impostata su "ACCEPT_AUTOMATICALLY". Questa opzione può essere modificata in qualsiasi momento in "ACCEPT_MANUAL" modificando il file YAML del collegamento di servizio (my-psc.yaml).


9. Crea la rete VPC consumer

Nella sezione seguente, il VPC consumer è configurato in un progetto separato. La comunicazione tra la rete consumer e quella producer viene eseguita tramite il collegamento di servizio definito nella rete consumer.
Il codelab richiede due progetti, anche se non è un requisito per PSC. Prendi nota dei riferimenti per supportare uno o più progetti.
Singolo progetto: aggiorna il progetto per supportare la rete di produttori e consumatori
In Cloud Shell, assicurati che l'ID progetto sia configurato.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] consumerproject=YOUR-PROJECT-NAME prodproject=YOUR-PROJECT-NAME echo $prodproject echo $consumerproject
Più progetti: aggiorna il progetto per supportare una rete consumer
In Cloud Shell, assicurati che l'ID progetto sia configurato.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] consumerproject=YOUR-PROJECT-NAME echo $consumerproject
Rete VPC
Da Cloud Shell
gcloud compute networks create vpc-demo-consumer --project=$consumerproject --subnet-mode=custom
Crea una subnet per PSC
Da Cloud Shell
gcloud compute networks subnets create consumer-subnet --project=$consumerproject --range=10.0.60.0/24 --network=vpc-demo-consumer --region=us-central1
Crea una subnet per le istanze VM
Da Cloud Shell
gcloud compute networks subnets create consumer-subnet-vm --project=$consumerproject --range=10.0.70.0/24 --network=vpc-demo-consumer --region=us-central1
Crea un indirizzo IP statico per accedere al servizio pubblicato
Da Cloud Shell
gcloud compute addresses create vpc-consumer-psc --region=us-central1 --subnet=consumer-subnet --addresses 10.0.60.100
Crea regole firewall
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 firewall-rules create psclab-iap-consumer --network vpc-demo-consumer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging
Sebbene non sia obbligatorio per PSC, crea una regola firewall in uscita per monitorare il traffico PSC dei consumer verso il collegamento del servizio dei produttori
gcloud compute --project=$consumerproject firewall-rules create vpc-consumer-psc --direction=EGRESS --priority=1000 --network=vpc-demo-consumer --action=ALLOW --rules=all --destination-ranges=10.0.60.0/24 --enable-logging
10. Crea l'istanza di test consumer 1
Da Cloud Shell
gcloud compute instances create consumer-instance-1 --zone=us-central1-a --machine-type=e2-micro --private-network-ip=10.0.70.10 --no-address --subnet=consumer-subnet-vm --tags=google1 --image-family=debian-10 --image-project=debian-cloud
11. Crea l'istanza di test consumer 2
Da Cloud Shell
gcloud compute instances create consumer-instance-2 --zone=us-central1-a --machine-type=e2-micro --private-network-ip=10.0.70.20 --no-address --subnet=consumer-subnet-vm --tags=google2 --image-family=debian-10 --image-project=debian-cloud
12. Crea un collegamento al servizio
In un passaggio precedente, hai copiato la stringa Producer Service Attachment in un luogo sicuro. Inserisci il valore memorizzato nel campo "target-service-attachment".

Da Cloud Shell
gcloud compute forwarding-rules create vpc-consumer-psc-fr --region=us-central1 --network=vpc-demo-consumer --address=vpc-consumer-psc --target-service-attachment=yoursavedproducerserviceattachment
13. Convalida - Consumatore
Utilizzeremo i log CURL e firewall per convalidare la comunicazione tra consumatore e produttore.
All'interno del progetto del consumer, gli indirizzi IP statici vengono utilizzati per originare la comunicazione con il producer. Questo mapping dell'indirizzo IP statico alla regola di forwarding del consumer viene convalidato eseguendo la seguente sintassi.

Dalla shell di utilizzo di Cloud VPC consumer, identifica la regola di forwarding e l'IP statico.
gcloud compute forwarding-rules describe vpc-consumer-psc-fr --region us-central1
Nell'output riportato di seguito, utilizzeremo 10.0.60.100 per raggiungere il produttore in un passaggio successivo
IPAddress: 10.0.60.100 creationTimestamp: '2021-09-30T21:13:54.124-07:00' id: '3564572805904938477' kind: compute#forwardingRule labelFingerprint: 42WmSpB8rSM= name: vpc-consumer-psc-fr network: https://www.googleapis.com/compute/v1/projects/deepakmichaelstage/global/networks/vpc-demo-consumer networkTier: PREMIUM pscConnectionId: '36583161500548196' pscConnectionStatus: ACCEPTED
Visualizzare il servizio collegato
Nella console cloud, vai a Servizi di rete → Private Service Connect → Endpoint connessi e visualizza l'endpoint appena creato.

Accediamo a consumer-instance-1 e testiamo l'accesso al servizio pubblicato dal producer
Da Cloud Shell, apri una nuova scheda facendo clic su +

Da Cloud Shell, esegui le seguenti operazioni:
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-1" --project "$projectname"
Una volta eseguito l'accesso all'istanza consumer-instance-1, esegui un comando curl sull'indirizzo IP della regola di forwarding 10.0.60.100
Da Cloud Shell, esegui le seguenti operazioni:
user@consumer-instance-1:~$ curl 10.0.60.100
Output di esempio
user@consumer-instance-1:~$ curl 10.0.60.100
{
"cluster_name": "gke-psc-l4",
"host_header": "10.0.60.100",
"node_name": "gke-gke-psc-l4-default-pool-f2c6e301-vnlz.c.prodprojectid.internal",
"pod_name": "psc-ilb-588887dfdb-w7tbr",
"pod_name_emoji": "🤷",
"project_id": "prodorijectid",
"timestamp": "2021-10-01T17:43:37",
"zone": "us-central1-a"
Accediamo a consumer-instance-2 e testiamo l'accesso al servizio pubblicato dal producer
Da Cloud Shell, apri una nuova scheda facendo clic su +

Da Cloud Shell, esegui le seguenti operazioni:
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-2" --project "$projectname"
Da Cloud Shell, esegui le seguenti operazioni:
user@consumer-instance-2:~$ curl 10.0.60.100
Output di esempio
deepakmichael@consumer-instance-2:~$ curl 10.0.60.100
{
"cluster_name": "gke-psc-l4",
"host_header": "10.0.60.100",
"node_name": "gke-gke-psc-l4-default-pool-f2c6e301-vnlz.c.prodproject.internal",
"pod_name": "psc-ilb-588887dfdb-4jdql",
"pod_name_emoji": "🧑🏿",
"project_id": "prodproject",
"timestamp": "2021-10-01T17:49:51",
"zone": "us-central1-a"
14. Logging dei firewall - Convalida allocata
Utilizza Esplora log per verificare che la regola firewall "vpc-consumner-psc" acquisisca il flusso tra l'istanza VM e l'IP statico
- Dalla console Cloud, identifica Logging operazioni → Esplora log
- Nel campo Query, aggiorna la voce riportata di seguito con yourconsumerproject e seleziona "Esegui query".
logName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")
- I risultati della query forniscono quanto segue per screenshot fornito

- Espandi il log (jsonPayload → Connection) e identifica l'output fornito di seguito. Prendi nota di dest_ip: 10.0.60.100 è l'IP TCP statico utilizzato per accedere al servizio Producer e src_ip: 10.0.70.10 o 10.0.70.20 sono gli indirizzi IP delle istanze VM. La disposizione è consentita.

15. Convalida - Produttore

Nel progetto Producers verifica che il collegamento del servizio sia stato eseguito correttamente. Vai a Servizi di rete → Private Service Connect → Servizi pubblicati

Se fai clic sul servizio, vengono visualizzati il progetto consumer connesso e lo stato, come illustrato di seguito.

16. Limitare l'accesso a un servizio pubblicato

Finora abbiamo confermato che entrambe le istanze hanno accesso ai servizi pubblicati. Creiamo una regola firewall in uscita per negare all'istanza consumer 2 l'accesso al servizio pubblicato.
Per impostazione predefinita, GCP consente tutto il traffico in uscita, ma nega tutto il traffico in entrata. Nei passaggi seguenti creeremo una regola firewall basata su un tag di rete definito in precedenza, "google2", utilizzato durante la creazione di consumer-instance-2 per negare l'accesso al servizio pubblicato.

Apri una nuova scheda di Cloud Shell facendo clic su + esegui la seguente regola firewall in Cloud Shell
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute --project=$projectname firewall-rules create psc-endpoint-deny-egress --direction=EGRESS --priority=999 --network=vpc-demo-consumer --action=DENY --rules=all --destination-ranges=10.0.60.100/32 --target-tags=google2 --enable-logging
Ora verifichiamo se consumer-instance-2 è in grado di accedere al servizio pubblicato. Se la sessione è scaduta, devi aprire una nuova Cloud Shell e accedere alla VM come descritto di seguito.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-2" --project "$projectname"
Da Cloud Shell, esegui le seguenti operazioni:
user@consumer-instance-2:~$ curl 10.0.60.100
Output di esempio
user@consumer-instance-2:~$ curl 10.0.60.100 curl: (7) Failed to connect to 10.0.60.100 port 80: Connection timed out
Logging del firewall - Convalida negata
Utilizza Esplora log per verificare che la regola firewall "psc-endpoint-deny-egress" acquisisca il flusso tra l'istanza VM e l'IP statico
- Dalla console Cloud, identifica Logging operazioni → Esplora log
- Nel campo Query, aggiorna la voce riportata di seguito con il tuo consumerproject e seleziona "Esegui query".
logName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:psc-endpoint-deny-egress")
- I risultati della query forniscono quanto segue per screenshot fornito

- Espandi il log e identifica l'output fornito di seguito. Prendi nota di dest_ip: 10.0.60.100 è l'IP TCP statico e src_ip: 10.0.70.10 o 10.0.70.20 sono gli indirizzi IP dell'istanza VM. La disposizione è negata.

17. Procedura di pulizia
Procedura per la pulizia della rete del produttore

Da una singola shell cloud nel terminale del progetto Producer, elimina i componenti del lab
gcloud container clusters delete gke-psc-l4 --region us-central1-a --quiet gcloud compute networks subnets delete gke-nat-subnet --region=us-central1 --quiet gcloud compute networks subnets delete node-subnet1 --region=us-central1 --quiet gcloud compute networks delete gke-producer-l4-vpc --quiet

Procedura di pulizia della rete di consumatori
Da una singola shell cloud nel terminale del progetto consumer, elimina i componenti del lab
gcloud compute instances delete consumer-instance-1 --zone=us-central1-a --quiet gcloud compute instances delete consumer-instance-2 --zone=us-central1-a --quiet gcloud compute forwarding-rules delete vpc-consumer-psc-fr --region=us-central1 --quiet gcloud compute addresses delete vpc-consumer-psc --region=us-central1 --quiet gcloud compute firewall-rules delete psclab-iap-consumer --quiet gcloud compute networks subnets delete consumer-subnet --region=us-central1 --quiet gcloud compute networks subnets delete consumer-subnet-vm --region=us-central1 --quiet gcloud compute firewall-rules delete vpc-consumer-psc --quiet gcloud compute firewall-rules delete psc-endpoint-deny-egress --quiet gcloud compute networks delete vpc-demo-consumer --quiet
18. Complimenti!
Congratulazioni per aver completato il codelab.
Argomenti trattati
- Vantaggi di Private Service Connect
- Concetti chiave per i consumatori di servizi
- Concetti chiave per i producer di servizi
- Crea un ambiente di produzione
- Esporre il servizio (ambiente producer) tramite un collegamento del servizio
- Creare un ambiente consumer
- Crea una regola di forwarding nella rete consumer
- Convalida l'accesso dei consumatori
- Abilita il controllo dell'accesso ai criteri
- Utilizzo di una regola firewall in uscita per bloccare l'accesso a una regola di forwarding consumer