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 producer di servizi può supportare più di un consumer di servizi.
- Ogni consumatore si connette a un indirizzo IP interno da lui definito. Private Service Connect esegue Network Address Translation (NAT) per instradare la richiesta al producer di servizi.
Figura 2. Private Service Connect utilizza endpoint e collegamenti ai servizi 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 consumer di servizi
- Concetti chiave per i producer di servizi
- Crea un ambiente producer
- Esponi il servizio (ambiente producer) tramite il collegamento a un servizio
- Crea un ambiente consumer
- Crea una regola di forwarding nella rete consumer
- Convalidare 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 forwarding 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
- Può creare un cluster GKE
2. Vantaggi di Private Service Connect
Con PSC, hai diversi vantaggi rispetto all'utilizzo del peering VPC:
Migliore controllo dello spazio IP privato
- In qualità di consumer di servizi, puoi controllare l'indirizzo IP privato utilizzato per la connessione al servizio gestito a cui vuoi accedere.
- In qualità di consumer di servizi, non devi preoccuparti di prenotare intervalli di indirizzi IP privati per i servizi di backend utilizzati nel tuo VPC. Devi solo scegliere un indirizzo IP dalla tua subnet per connetterti ai servizi producer.
- In qualità di producer di servizi, puoi scegliere di eseguire il deployment di un modello multi-tenant, in cui il VPC contiene servizi che gestiscono più VPC consumer. I consumatori con intervalli di subnet che si sovrappongono non sono più un problema.
- Come fornitore di servizi, puoi scalare il tuo servizio fino a tutte le istanze VM necessarie, senza dover contattare il tuo consumer per richiedere altri indirizzi IP.
Sicurezza e isolamento migliorati
- In qualità di consumer di servizi, solo tu puoi avviare la comunicazione con il producer di servizi. Questa connettività unidirezionale semplifica drasticamente la configurazione del firewall, ma riduce anche il rischio di traffico non autorizzato proveniente dal producer di servizi.
- In qualità di producer 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.
Maggiore scalabilità
- PSC consente una progettazione a scalabilità elevata supportando migliaia di consumer e consente ai producer 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 risorse secondo le necessità nel tuo VPC. La portata di questo errore non è influenzata dal numero di risorse di questo tipo create nel VPC del producer.
3. Concetti chiave per i consumer di servizi
Puoi utilizzare gli endpoint di Private Service Connect per consumare i servizi al di fuori della tua rete VPC. I consumer di servizi creano endpoint Private Service Connect che si connettono a un servizio di destinazione.
Endpoint
Puoi utilizzare gli endpoint Private Service Connect per connetterti a un servizio di destinazione. Gli endpoint hanno un indirizzo IP interno nella rete VPC e si basano sulla risorsa della regola di forwarding.
Invii il traffico all'endpoint, che lo inoltra alle destinazioni al di fuori della tua rete VPC.
Obiettivi
Gli endpoint Private Service Connect hanno una destinazione, ovvero il servizio a cui vuoi connetterti:
- Un pacchetto 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 il tuo endpoint al servizio di un producer di servizi, è necessario il collegamento del 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 un servizio disponibile per i consumer, puoi creare una o più subnet dedicate da utilizzare per la Network Address Translation (NAT) degli indirizzi IP consumer. Quindi creerai 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 Private Service Connect specifiche.
Quando una richiesta viene inviata da una rete VPC consumer, l'indirizzo IP di origine del consumer viene convertito utilizzando NAT (SNAT) di origine in un indirizzo IP selezionato da una delle subnet Private Service Connect.
Se desideri conservare le informazioni sull'indirizzo IP della connessione del consumer, consulta Visualizzazione delle informazioni della connessione del 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 la SNAT delle connessioni consumer in entrata.
La subnet Private Service Connect deve contenere almeno un indirizzo IP per ogni 63 VM consumer,in modo che a ciascuna VM consumer siano allocate 1024 tuple di origine per la traduzione degli indirizzi di rete.
La dimensione minima di una subnet Private Service Connect è /24.
Collegamenti dei servizi
I producer di servizi espongono il proprio servizio tramite il collegamento a un servizio.
- Per esporre un servizio, un producer 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 al 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 dei servizi configurano un endpoint per la connessione al servizio e il producer di servizi accetta o rifiuta le richieste di connessione.
Requisiti e limitazioni
- Si applicano limitazioni per Private Service Connect.
- Puoi creare un collegamento a un servizio in GKE 1.21.4-gke.300 e versioni successive.
- Non puoi utilizzare la stessa subnet in più configurazioni di collegamenti ai servizi.
- 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 del servizio di destinazione che viene mappato al collegamento al servizio del producer (servizio pubblicato).
Ora diamo un'occhiata alla rete di produttori. Puoi notare che la rete dei producer non ha una mappatura alla rete dei consumer. La rete del producer contiene invece un collegamento a un servizio (servizio pubblicato) utilizzato dal consumer per i servizi. Il collegamento al servizio del producer è esposto da un bilanciatore del carico L4 in entrata di GKE (servizio pubblicato) che consente la comunicazione con i pod GKE e 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 (SNAT) di origine 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 la SNAT delle connessioni consumer in entrata.
Per saperne di più su L4ILB per GKE Private Service Connect e ottenere l'accesso diretto ai contenuti utilizzati per questo lab, fai riferimento a quanto segue.
Configurazione dell'ambiente da seguire in modo 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 progetto è il nome visualizzato dei partecipanti del progetto. Si tratta di una stringa di caratteri non utilizzata dalle API di Google e può essere aggiornata 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). La console Cloud genera automaticamente una stringa univoca. di solito non ti importa cosa sia. Nella maggior parte dei codelab, devi fare riferimento all'ID progetto (che solitamente è identificato come
PROJECT_ID
), quindi, se non ti piace, generane un altro a caso oppure puoi fare un tentativo personalizzato e controllare se è disponibile. Poi c'è "congelato" dopo la creazione del progetto. - C'è un terzo valore, il numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
- Successivamente, dovrai abilitare la fatturazione nella console Cloud per utilizzare le risorse/le API Cloud. Eseguire questo codelab non dovrebbe costare molto. Per arrestare le risorse in modo da non incorrere in fatturazione oltre questo tutorial, segui eventuali "pulizie" istruzioni riportate alla fine del codelab. I nuovi utenti di Google Cloud sono idonei al programma prova senza costi di 300$.
Avvia Cloud Shell
Anche se Google Cloud può essere utilizzato da remoto dal tuo laptop, in questo codelab utilizzerai Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.
Dalla console di Google Cloud, fai clic sull'icona di Cloud Shell nella barra degli strumenti in alto a destra:
Dovrebbe richiedere solo qualche istante per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere una schermata simile al seguente:
Questa macchina virtuale viene caricata con tutti gli strumenti di sviluppo necessari. 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 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 progetti singoli o multipli.
Progetto singolo: aggiorna il progetto per supportare la rete di producer e consumer
All'interno di 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 producer
All'interno di 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 sui codici di colorazione:
7. Crea rete VPC dei producer
Rete VPC
Da Cloud Shell
gcloud compute networks create gke-producer-l4-vpc --project=$prodproject --subnet-mode=custom
Crea una 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 la procedura.
Per informazioni sulle subnet Private Service Connect, vedi 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 carico di lavoro e dei servizi
Il manifest seguente descrive un deployment che esegue un'immagine container di applicazione web di esempio. 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 manifest seguente 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
Crea ServiceAttachment
Il manifest seguente descrive un ServiceAttachment che espone il servizio che hai creato ai consumer del servizio. 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 include i seguenti campi:
- connectionPreference: la preferenza di connessione che determina il modo in cui i clienti si connettono al servizio. Puoi utilizzare l'approvazione automatica del progetto utilizzando ACCEPT_AUTOMATIC o l'approvazione esplicita del progetto utilizzando ACCEPT_MANUAL. Per maggiori informazioni, consulta la pagina relativa alla pubblicazione di servizi tramite Private Service Connect.
- natSubnets: un elenco di nomi di risorse della subnet da utilizzare per il collegamento al servizio.
- proxyProtocol: se impostato su true, l'IP di origine consumer e l'ID connessione Private Service Connect sono disponibili nelle richieste. Questo campo è facoltativo e il valore predefinito è false se non viene specificato.
- consumerAllowList: l'elenco di progetti consumer a cui è consentito connettersi a ServiceAttachment. Questo campo può essere utilizzato solo se connectionPreference è ACCEPT_MANUAL. Per ulteriori informazioni su questo campo e su altre opzioni, consulta l'articolo sulla pubblicazione di servizi tramite Private Service Connect.
Convalida producer
Visualizzazione dei dettagli del collegamento al servizio
Puoi visualizzare i dettagli di un ServiceAttachment utilizzando il seguente comando da Cloud Shell
kubectl describe serviceattachment emoji-sa
Visualizza il bilanciatore del carico interno di GKE L4
Dalla console Cloud, vai a Servizi di rete → Bilanciamento del carico → Frontend
Identifica l'indirizzo IP del frontend che si allinea nella subnet del nodo precedentemente definita 192.168.10.0/24 (nota nello screenshot di seguito, il tuo indirizzo IP può variare).
Visualizza il servizio pubblicato
Nella console 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 sullo screenshot riportato di seguito, anche se i valori dei servizi e di destinazione potrebbero essere diversi.
Fai clic sul nome del servizio per passare alla schermata seguente; prendi nota dei dettagli del collegamento del servizio inseriti nelle Informazioni di base. Nota anche "Progetti collegati" è vuoto perché il consumer deve ancora registrarsi al servizio. ACCETTA e RIFIUTA rimarranno in grigio poiché la Preferenza di connessione è impostata su "ACCEPT_AUTOMATICALLY"", questa opzione può essere modificata in qualsiasi momento in "ACCEPT_MANUAL" modificando il file yaml del collegamento al servizio (my-psc.yaml).
9. Crea rete VPC dei consumer
Nella sezione seguente, il VPC consumer è configurato in un progetto separato. La comunicazione tra la rete del consumatore e del producer viene effettuata tramite il collegamento al servizio definito nella rete del consumatore.
Il codelab richiede due progetti, anche se non è un requisito per PSC. Prendi nota dei riferimenti per supportare progetti singoli o multipli.
Progetto singolo: aggiorna il progetto per supportare la rete di producer e consumer
All'interno di 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
All'interno di 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 applica a tutte le istanze VM a cui vuoi essere accessibile tramite IAP.
- Consente il traffico in entrata dall'intervallo IP 35.235.240.0/20. Questo intervallo contiene tutti gli indirizzi IP 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 necessario per PSC, è necessario creare una regola firewall in uscita per monitorare il traffico PSC consumer verso il collegamento del servizio dei producer
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 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 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 a un servizio
In un passaggio precedente, hai copiato la stringa dell'allegato del servizio Producer in un posto sicuro. Inseriamo il valore archiviato 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 - Consumatori
Useremo CURL e log dei firewall per convalidare le comunicazioni tra consumatori e producer.
All'interno del progetto del consumatore, gli indirizzi IP statici vengono utilizzati per trasmettere le comunicazioni con il producer. Questa mappatura dell'indirizzo IP statico alla regola di forwarding del consumer viene convalidata eseguendo la sintassi seguente.
Dai VPC consumer utilizza Cloud Shell identifica la regola di forwarding e l'IP statico
gcloud compute forwarding-rules describe vpc-consumer-psc-fr --region us-central1
Output qui sotto, useremo 10.0.60.100 per raggiungere il producer in una fase successiva.
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
Visualizza il servizio connesso
Dalla console Cloud, vai a Servizi di rete → Private Service Connect → Endpoint connessi e visualizza l'endpoint appena creato
Consente di accedere a consumer-instance-1 e testare l'accesso al servizio pubblicato da Producer
Da Cloud Shell, apri una nuova scheda facendo clic sul segno +
Da Cloud Shell, esegui queste 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"
Dopo aver effettuato 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 queste 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"
Consente di accedere a consumer-instance-2 e testare l'accesso al servizio pubblicato da Producer
Da Cloud Shell, apri una nuova scheda facendo clic sul segno +
Da Cloud Shell, esegui queste 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 queste 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 firewall - Convalida allocata
Con Esplora log, convalida la regola firewall "vpc-consumner-psc" sta acquisendo il flusso tra l'istanza della VM e l'IP statico
- Dalla console Cloud, Identifica il logging delle operazioni → Esplora log
- Nel campo Query aggiorna la voce seguente 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 ogni screenshot fornito
- Espandi il log (jsonPayload → Connessione) e identifica l'output fornito di seguito. Prendi nota di dest_ip: 10.0.60.100 è l'IP TCP STATICO usato per accedere al servizio Producer e src_ip: 10.0.70.10 o 10.0.70.20 sono gli indirizzi IP delle istanze VM. Disposizione consentita.
15. Convalida - Producer
Dal progetto Producers verifica che il collegamento al servizio sia connesso correttamente. Vai a Servizi di rete → Private Service Connect → Servizi pubblicati
Fai clic sul servizio per visualizzare il tuo progetto e lo stato del consumatore connesso, come illustrato di seguito
16. Limitazione dell'accesso a un servizio pubblicato
Finora abbiamo verificato che entrambe le istanze hanno accesso ai Servizi pubblicati. Creiamo una regola firewall in uscita per negare l'accesso a consumer-instance-2 al servizio pubblicato.
Per impostazione predefinita, Google Cloud consente tutto il traffico in uscita, ma nega tutto il traffico in entrata. Nei seguenti passaggi creeremo una regola firewall basata su un tag di networking "google2" precedentemente definito utilizzato durante la creazione di consumer-instance-2 per negare l'accesso al servizio pubblicato.
Apri una nuova scheda 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 shell di Cloud 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 queste 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 firewall - Convalida negata
Utilizzando Esplora log, convalida la regola firewall "psc-endpoint-deny-egress" sta acquisendo il flusso tra l'istanza VM e l'IP statico
- Dalla console Cloud, Identifica il logging delle operazioni → Esplora log
- Nel campo Query aggiorna la voce seguente con il tuo progetto consumer 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 ogni 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 delle istanze VM. Disposizione negata.
17. Passaggi per la pulizia
Passaggi di pulizia della rete del producer
Elimina i componenti del lab da una singola Cloud Shell nel terminale del progetto Producer
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
Passaggi di pulizia della rete del consumatore
Elimina i componenti del lab da un'unica Cloud Shell nel terminale del progetto consumer
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!
Complimenti per aver completato il codelab.
Argomenti trattati
- Vantaggi di Private Service Connect
- Concetti chiave per i consumer di servizi
- Concetti chiave per i producer di servizi
- Crea un ambiente producer
- Esponi il servizio (ambiente producer) tramite il collegamento a un servizio
- Crea un ambiente consumer
- Crea una regola di forwarding nella rete consumer
- Convalidare 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