1. Introduzione
In questo codelab eseguirai una connessione in uscita a un database PostgreSQL on-premise tramite H-VPN utilizzando un bilanciatore del carico proxy TCP interno e un gruppo di endpoint di rete ibrida richiamato da Looker PSC come consumer di servizi.
Private Service Connect è una funzionalità di Google Cloud Networking 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 nelle proprie reti VPC separate e di offrire una connessione privata ai propri consumer. Ad esempio, quando utilizzi Private Service Connect per accedere a Looker, tu sei il consumer di servizi e Google è il producer di servizi, come evidenziato nella Figura 1.
Figura 1.

L'accesso in uscita, noto anche come PSC inverso, consente al consumer di creare un servizio pubblicato come producer per consentire a Looker di accedere agli endpoint on-premise, in un VPC, ai servizi gestiti e all'ambiente ibrido. Le connessioni in uscita possono essere implementate in qualsiasi regione, indipendentemente da dove viene implementato Looker PSC, come evidenziato nella Figura 2.
Figura 2.

Cosa imparerai a fare
- Requisiti di rete
- Crea un servizio producer Private Service Connect
- Crea un endpoint Private Service Connect in Looker
- Stabilisci la connettività al database Postgres on-premise da Looker utilizzando un test di connessione
Che cosa ti serve
- Progetto Google Cloud con autorizzazioni di proprietario
- Istanza PSC di Looker esistente

2. Cosa creerai
Creerai una rete Producer, looker-psc-demo, per eseguire il deployment del bilanciatore del carico proxy TCP interno e del NEG ibrido pubblicato come servizio tramite Private Service Connect (PSC). Per dimostrare un database on-premise, eseguirai il deployment di un VPC on-prem-demo connesso al VPC looker-psc-demo utilizzando HA-VPN.
Per convalidare l'accesso al servizio Producer, esegui le seguenti azioni:
- Crea un endpoint PSC in Looker associato al collegamento del servizio producer
- Utilizza la console di Looker per eseguire una convalida della connessione al database Postgres on-premise
3. Requisiti di rete
Di seguito è riportata la suddivisione dei requisiti di rete per la rete del produttore. Il consumer in questo codelab è l'istanza PSC di Looker.
Componenti | Descrizione |
VPC (looker-psc-demo) | VPC in modalità personalizzata |
VPC (on-prem-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. |
Subnet della regola di forwarding PSC | Utilizzato per allocare un indirizzo IP per il bilanciatore del carico del proxy TCP regionale interno |
Subnet NEG PSC | Utilizzato per allocare un indirizzo IP per il gruppo di endpoint di rete |
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 o a un endpoint di backend hanno un indirizzo IP di origine dalla subnet solo proxy. |
NEG ibrido | I servizi on-premise e altri servizi cloud vengono trattati come qualsiasi altro backend di Cloud Load Balancing. La differenza principale è che utilizzi un NEG di connettività ibrida per configurare gli endpoint di questi backend. Gli endpoint devono essere combinazioni IP:porta valide che il bilanciatore del carico può raggiungere utilizzando prodotti di connettività ibrida come Cloud VPN o Cloud Interconnect. |
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 ibrido. |
Router Cloud |
|
VPN ad alta disponibilità | VPN ad alta affidabilità tra reti VPC Google Cloud. In questa topologia, puoi connettere due reti VPC Google Cloud utilizzando un gateway VPN ad alta affidabilità in ogni rete. Le reti VPC possono trovarsi nella stessa regione o in più regioni. |
Cloud NAT | Utilizzato dal VPC on-prem-demo per l'uscita da internet |
4. Topologia del codelab

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=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region
Attiva tutti i servizi necessari:
gcloud services enable compute.googleapis.com
7. Crea rete VPC producer
Rete VPC
In Cloud Shell, esegui le seguenti operazioni:
gcloud compute networks create looker-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 looker-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 looker-psc-demo --range 172.16.20.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=looker-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 hybrid-neg-lb-ip \
--region=$region \
--subnet=producer-psc-fr-subnet
In Cloud Shell, visualizza l'indirizzo IP riservato.
gcloud compute addresses describe hybrid-neg-lb-ip \
--region=$region | grep -i address:
Output di esempio:
gcloud compute addresses describe hybrid-neg-lb-ip --region=$region | grep -i address:
address: 172.16.20.2
Configura il NEG ibrido
Crea un NEG ibrido e imposta –network-endpoint-type su NON_GCP_PRIVATE_IP_PORT
In Cloud Shell, crea un NEG ibrido utilizzato per accedere al database on-premise:
gcloud compute network-endpoint-groups create on-prem-hybrid-neg \
--network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
--network=looker-psc-demo \
--zone=$zone
In Cloud Shell, aggiorna il NEG ibrido con l'IP:porta del database on-premise, 192.168.10.4 e la porta 5432, generati in un passaggio successivo del tutorial:
gcloud compute network-endpoint-groups update on-prem-hybrid-neg \
--add-endpoint=ip=192.168.10.4,port=5432 \
--zone=$zone
Crea un controllo di integrità a livello di regione
In Cloud Shell, crea un controllo di integrità che esegua il probing della porta del database on-premise, 5432:
gcloud compute health-checks create tcp on-prem-5432-healthcheck \
--region=$region \
--port=5432
Crea policy firewall di rete e regole firewall
In Cloud Shell, esegui le seguenti operazioni:
gcloud compute network-firewall-policies create looker-psc-demo-policy --global
gcloud compute network-firewall-policies associations create --firewall-policy looker-psc-demo-policy --network looker-psc-demo --name looker-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 looker-psc-demo-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp
8. 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=on-prem-5432-healthcheck --health-checks-region=$region
In Cloud Shell, aggiungi il backend NEG ibrido al servizio di backend:
gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=on-prem-hybrid-neg --network-endpoint-group-zone=$zone --balancing-mode=CONNECTION --max-connections=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).
In Cloud Shell, esegui le seguenti operazioni:
gcloud compute forwarding-rules create producer-hybrid-neg-fr \
--load-balancing-scheme=INTERNAL_MANAGED \
--network-tier=PREMIUM \
--network=looker-psc-demo \
--subnet=producer-psc-fr-subnet \
--address=hybrid-neg-lb-ip \
--target-tcp-proxy=producer-lb-tcp-proxy \
--target-tcp-proxy-region=$region \
--region=$region \
--ports=5432
Crea collegamento al servizio
In Cloud Shell, crea il collegamento servizio onpremdatabase1-svc-attachment:
gcloud compute service-attachments create onpremdatabase1-svc-attachment --region=$region --producer-forwarding-rule=producer-hybrid-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 projects per configurare l'endpoint PSC in Looker.
selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/onpremdatabase1-svc-attachment
In Cloud Shell, esegui le seguenti operazioni:
gcloud compute service-attachments describe onpremdatabase1-svc-attachment --region=$region
Output di esempio previsto:
connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-09-01T16:07:51.600-07:00'
description: ''
enableProxyProtocol: false
fingerprint: cFt9rERR1iE=
id: '2549689544315850024'
kind: compute#serviceAttachment
name: onpremdatabase1-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
high: '19348441121424360'
low: '2549689544315850024'
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/onpremdatabase1-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-hybrid-neg-fr
In Cloud Console, vai a:
Servizi di rete → Private Service Connect → Servizi pubblicati


9. Stabilisci una connessione dell'endpoint PSC in Looker
Nella sezione seguente, assocerai il collegamento al servizio dei producer a PSC di Looker Core utilizzando i flag --psc-service-attachment in Cloud Shell per un singolo dominio.
In Cloud Shell, crea l'associazione PSC aggiornando i seguenti parametri in modo che corrispondano al tuo ambiente:
- INSTANCE_NAME: il nome dell'istanza di Looker (Google Cloud core).
- DOMAIN_1: onprem.database1.com
- SERVICE_ATTACHMENT_1: URI acquisito durante la creazione del collegamento al servizio, onpremdatabase1-svc-attachment
- REGIONE: la regione in cui è ospitata l'istanza di Looker (Google Cloud core).
In Cloud Shell, esegui le seguenti operazioni:
gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION
Esempio:
gcloud looker instances update looker-psc-instance --psc-service-attachment domain=onprem.database1.com,attachment=projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment --region=$region
In Cloud Shell, verifica che serviceAttachments.connectionStatus sia "ACCEPTED", aggiorna con il nome dell'istanza PSC di Looker:
gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json
Esempio:
gcloud looker instances describe looker-psc-instance --region=$region --format=json
Esempio:
{
"adminSettings": {},
"createTime": "2024-08-23T00:00:45.339063195Z",
"customDomain": {
"domain": "looker.cosmopup.com",
"state": "AVAILABLE"
},
"encryptionConfig": {},
"lookerVersion": "24.14.18",
"name": "projects/$project/locations/$region/instances/looker-psc-instance",
"platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
"pscConfig": {
"allowedVpcs": [
"projects/$project/global/networks/looker-psc-demo",
"projects/$project/global/networks/looker-shared-vpc"
],
"lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/$region/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
"serviceAttachments": [
{
"connectionStatus": "ACCEPTED",
"localFqdn": "onprem.database1.com",
"targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment"
}
]
},
"pscEnabled": true,
"state": "ACTIVE",
"updateTime": "2024-09-01T23:15:07.426372901Z"
}
Convalida l'endpoint PSC in Cloud Console
Dalla console Cloud puoi convalidare la connessione PSC
In Cloud Console, vai a:
Looker → Istanza Looker → Dettagli


Crea la rete VPC on-prem
Rete VPC
In Cloud Shell, esegui le seguenti operazioni:
gcloud compute networks create on-prem-demo --project=$project --subnet-mode=custom
Crea la subnet del database PostgreSQL
In Cloud Shell, esegui le seguenti operazioni:
gcloud compute networks subnets create database-subnet --project=$project --range=192.168.10.0/28 --network=on-prem-demo --region=$region
In Cloud Shell, prenota un indirizzo IPv4 interno, utilizzato per onprem.database1.com, 192.168.10.4:
gcloud compute addresses create on-prem-database1-ip --region=$region --subnet=database-subnet --addresses 192.168.10.4
Crea il router Cloud per il VPC on-prem-demo
Cloud NAT viene utilizzato nel tutorial per l'installazione del pacchetto software perché l'istanza VM non ha un indirizzo IP esterno.
In Cloud Shell, crea il router Cloud utilizzato con Cloud NAT e VPN ad alta disponibilità:
gcloud compute routers create on-prem-cr \
--region=$region \
--network=on-prem-demo \
--asn=65002
In Cloud Shell, crea il gateway NAT:
gcloud compute routers nats create on-prem-nat --router=on-prem-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region $region
Crea l'istanza di test del database
Crea un'istanza postgres-database che verrà utilizzata per testare e convalidare la connettività a Looker.
In Cloud Shell, crea l'istanza:
gcloud compute instances create postgres-database \
--project=$project \
--zone=$zone \
--machine-type=e2-medium \
--subnet=database-subnet \
--no-address \
--private-network-ip 192.168.10.4 \
--image-family debian-12 \
--image-project debian-cloud \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt -y install postgresql postgresql-client postgresql-contrib -y"
Crea policy firewall di rete e regole firewall
In Cloud Shell, esegui le seguenti operazioni:
gcloud compute network-firewall-policies create on-prem-demo-policy --global
gcloud compute network-firewall-policies associations create --firewall-policy on-prem-demo-policy --network on-prem-demo --name on-prem-demo --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.
In Cloud Shell, esegui le seguenti operazioni:
gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy on-prem-demo-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 dall'intervallo di subnet solo proxy 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 on-prem-demo-policy --description "allow traffic from proxy only subnet" --direction INGRESS --src-ip-ranges 10.10.10.0/24 --global-firewall-policy --layer4-configs=tcp
10. Connettività ibrida
Nella sezione seguente, creerai un router Cloud che ti consente di scambiare dinamicamente le route tra la tua rete Virtual Private Cloud (VPC) e la rete peer utilizzando il Border Gateway Protocol (BGP).
router Cloud può configurare una sessione BGP su un tunnel Cloud VPN per connettere le tue reti. Apprende automaticamente nuovi intervalli di indirizzi IP della subnet e li annuncia alla rete peer.
Nei passaggi seguenti, eseguirai il deployment della VPN ad alta affidabilità tra il VPC looker-psc-demo e il VPC on-prem-demo per dimostrare la connettività NEG ibrida a onprem.database1.com.
Crea il gateway VPN ad alta affidabilità per looker-psc-demo
Quando viene creato ogni gateway, vengono allocati automaticamente due indirizzi IPv4 esterni, uno per ogni interfaccia del gateway.
In Cloud Shell, crea il gateway VPN ad alta affidabilità:
gcloud compute vpn-gateways create looker-psc-demo-vpn-gw \
--network=looker-psc-demo \
--region=$region
Crea il gateway VPN ad alta affidabilità per on-prem-demo
Quando viene creato ogni gateway, vengono allocati automaticamente due indirizzi IPv4 esterni, uno per ogni interfaccia del gateway.
In Cloud Shell, crea il gateway VPN ad alta affidabilità:
gcloud compute vpn-gateways create on-prem-vpn-gw \
--network=on-prem-demo\
--region=$region
Convalida la creazione del gateway VPN ad alta affidabilità
Utilizzando la console, vai a CONNETTIVITÀ IBRIDA → VPN → GATEWAY VPN CLOUD.

Crea il router Cloud per looker-psc-demo
In Cloud Shell, crea il router Cloud:
gcloud compute routers create looker-psc-demo-cr \
--region=$region \
--network=looker-psc-demo\
--asn=65001
Crea i tunnel VPN per looker-psc-demo
Creerai due tunnel VPN su ogni gateway VPN ad alta affidabilità.
Crea tunnel VPN
In Cloud Shell, crea tunnel0:
gcloud compute vpn-tunnels create looker-psc-demo-tunnel0 \
--peer-gcp-gateway on-prem-vpn-gw \
--region $region \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router looker-psc-demo-cr \
--vpn-gateway looker-psc-demo-vpn-gw \
--interface 0
Crea tunnel VPN1
In Cloud Shell, crea tunnel1:
gcloud compute vpn-tunnels create looker-psc-demo-tunnel1 \
--peer-gcp-gateway on-prem-vpn-gw \
--region $region \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router looker-psc-demo-cr \
--vpn-gateway looker-psc-demo-vpn-gw \
--interface 1
Crea i tunnel VPN per on-prem-demo
Creerai due tunnel VPN su ogni gateway VPN ad alta affidabilità.
Crea tunnel VPN
In Cloud Shell, crea tunnel0:
gcloud compute vpn-tunnels create on-prem-tunnel0 \
--peer-gcp-gateway looker-psc-demo-vpn-gw \
--region $region \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router on-prem-cr \
--vpn-gateway on-prem-vpn-gw \
--interface 0
Crea tunnel VPN1
In Cloud Shell, crea tunnel1:
gcloud compute vpn-tunnels create on-prem-tunnel1 \
--peer-gcp-gateway looker-psc-demo-vpn-gw \
--region $region \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router on-prem-cr \
--vpn-gateway on-prem-vpn-gw \
--interface 1
Convalida la creazione del tunnel VPN
Utilizzando la console, vai a CONNETTIVITÀ IBRIDA → VPN → TUNNEL VPN CLOUD.

11. Definisci i vicini BGP
Crea un'interfaccia BGP e un peering per looker-psc-demo
In Cloud Shell, crea l'interfaccia BGP:
gcloud compute routers add-interface looker-psc-demo-cr \
--interface-name if-tunnel0-to-onprem \
--ip-address 169.254.1.1 \
--mask-length 30 \
--vpn-tunnel looker-psc-demo-tunnel0 \
--region $region
In Cloud Shell, crea il peer BGP:
gcloud compute routers add-bgp-peer looker-psc-demo-cr \
--peer-name bgp-on-premises-tunnel0 \
--interface if-tunnel1-to-onprem \
--peer-ip-address 169.254.1.2 \
--peer-asn 65002 \
--region $region
In Cloud Shell, crea l'interfaccia BGP:
gcloud compute routers add-interface looker-psc-demo-cr \
--interface-name if-tunnel1-to-onprem \
--ip-address 169.254.2.1 \
--mask-length 30 \
--vpn-tunnel looker-psc-demo-tunnel1 \
--region $region
In Cloud Shell, crea il peer BGP:
gcloud compute routers add-bgp-peer looker-psc-demo-cr \
--peer-name bgp-on-premises-tunnel1 \
--interface if-tunnel2-to-onprem \
--peer-ip-address 169.254.2.2 \
--peer-asn 65002 \
--region $region
Crea un'interfaccia BGP e il peering per on-prem-demo
In Cloud Shell, crea l'interfaccia BGP:
gcloud compute routers add-interface on-prem-cr \
--interface-name if-tunnel0-to-looker-psc-demo \
--ip-address 169.254.1.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel0 \
--region $region
In Cloud Shell, crea il peer BGP:
gcloud compute routers add-bgp-peer on-prem-cr \
--peer-name bgp-looker-psc-demo-tunnel0 \
--interface if-tunnel1-to-looker-psc-demo \
--peer-ip-address 169.254.1.1 \
--peer-asn 65001 \
--region $region
In Cloud Shell, crea l'interfaccia BGP:
gcloud compute routers add-interface on-prem-cr \
--interface-name if-tunnel1-to-looker-psc-demo \
--ip-address 169.254.2.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel1 \
--region $region
In Cloud Shell, crea il peer BGP:
gcloud compute routers add-bgp-peer on-prem-cr \
--peer-name bgp-looker-psc-demo-tunnel1\
--interface if-tunnel2-to-looker-psc-demo \
--peer-ip-address 169.254.2.1 \
--peer-asn 65001 \
--region $region
Vai a CONNETTIVITÀ IBRIDA → VPN per visualizzare i dettagli del tunnel VPN.

Convalida delle route apprese da looker-psc-demo tramite la VPN ad alta affidabilità
Ora che i tunnel VPN ad alta affidabilità e le sessioni BGP sono stabiliti, il comportamento predefinito del router Cloud è quello di annunciare le route di subnet. Visualizza le route apprese di looker-psc-demo.
Utilizzando la console, vai a Rete VPC → Reti VPC → looker-psc-demo → ROUTES → REGION → VIEW
Osserva che looker-psc-demo ha appreso la subnet del database 192.168.10.0/28 dal VPC on-prem-demo.

Verifica che il VPC on-prem-demo abbia appreso le route tramite la VPN ad alta affidabilità
Poiché il comportamento predefinito del router Cloud è quello di annunciare tutte le subnet, viene annunciata solo la subnet proxy tramite BGP. Il NEG ibrido utilizzerà la subnet solo proxy come indirizzo di origine quando comunica con il server onprem.database1.com.
Osserva che on-prem-demo ha appreso la subnet solo proxy 10.10.10.0/24 da looker-psc-demo.
Utilizzando la console, vai a Rete VPC → Reti VPC → on-prem-demo → ROUTES → REGION → VIEW

12. Creazione del database postgres di Looker
Nella sezione seguente, eseguirai l'accesso SSH alla VM postgres-database utilizzando Cloud Shell.
In Cloud Shell, esegui un comando ssh all'istanza postgres-database**:**
gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"
All'interno del sistema operativo, identifica e annota l'indirizzo IP (ens4) dell'istanza postgres-database:
ip a
Esempio:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc mq state UP group default qlen 1000
link/ether 42:01:c0:a8:0a:04 brd ff:ff:ff:ff:ff:ff
altname enp0s4
inet 192.168.10.4/32 metric 100 scope global dynamic ens4
valid_lft 66779sec preferred_lft 66779sec
inet6 fe80::4001:c0ff:fea8:a04/64 scope link
valid_lft forever preferred_lft forever
All'interno del sistema operativo, accedi a postgresql:
sudo -u postgres psql postgres
All'interno del sistema operativo, inserisci il prompt della password:
\password postgres
All'interno del sistema operativo, imposta la password su postgres (inserisci la stessa password due volte):
postgres
Esempio:
user@postgres-database:~$ sudo -u postgres psql postgres
\password postgres
psql (13.11 (Debian 13.11-0+deb11u1))
Type "help" for help.
postgres=# \password postgres
Enter new password for user "postgres":
Enter it again:
All'interno del sistema operativo, esci da postgres:
\q
Esempio:
postgres=# \q
user@postgres-database:~$
Nella sezione seguente, inserirai l'IP dell'istanza postgres-database (192.168.10.4) e la subnet solo proxy (10.10.10.0/24) nel file pg_hba.conf in IPv4 local connections (Connessioni locali IPv4).
sudo nano /etc/postgresql/15/main/pg_hba.conf
Lo screenshot seguente mostra l'aggiornamento completato: 
Nella sezione seguente, rimuovi il commento da postgresql.conf per ascoltare tutti gli indirizzi IP "*" come nello screenshot seguente:
sudo nano /etc/postgresql/15/main/postgresql.conf
Prima:

Dopo:

All'interno del sistema operativo, riavvia il servizio postgresql:
sudo service postgresql restart
All'interno del sistema operativo, verifica che lo stato di postgresql sia attivo:
sudo service postgresql status
Esempio:
All'interno del sistema operativo, verifica che lo stato di postgresql sia attivo:
user@postgres-database:/$ sudo service postgresql status
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; preset: enabled)
Active: active (exited) since Mon 2024-09-02 12:10:10 UTC; 1min 46s ago
Process: 20486 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 20486 (code=exited, status=0/SUCCESS)
CPU: 2ms
Sep 02 12:10:10 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Sep 02 12:10:10 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.
13. Crea il database postgres
Nella sezione seguente, creerai un database PostgreSQL denominato postgres_looker e uno schema looker_schema utilizzato per convalidare la connettività di Looker on-premise.
All'interno del sistema operativo, accedi a postgres:
sudo -u postgres psql postgres
All'interno del sistema operativo, crea il database:
create database postgres_looker;
All'interno del sistema operativo, elenca il database:
\l
All'interno del sistema operativo, crea l'utente postgres_looker con la password postgreslooker:
create user postgres_looker with password 'postgreslooker';
All'interno del sistema operativo, connettiti al database:
\c postgres_looker;
All'interno del sistema operativo, crea lo schema looker-schema ed esci al prompt di Cloud Shell.
create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
Exit from the OS, returning you to cloud shell:
\q
Esempio:
user@postgres-database:/$ sudo -u postgres psql postgres
psql (15.8 (Debian 15.8-0+deb12u1))
Type "help" for help.
postgres=# create database postgres_looker;
CREATE DATABASE
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | ICU Locale | Locale Provider | Access privileges
-----------------+----------+----------+---------+---------+------------+-----------------+-----------------------
postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 | | libc |
postgres_looker | postgres | UTF8 | C.UTF-8 | C.UTF-8 | | libc |
template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | | libc | =c/postgres +
| | | | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | | libc | =c/postgres +
| | | | | | | postgres=CTc/postgres
(4 rows)
postgres=# create user postgres_looker with password 'postgreslooker';
CREATE ROLE
postgres=# \c postgres_looker;
You are now connected to database "postgres_looker" as user "postgres".
postgres_looker=# create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
CREATE SCHEMA
CREATE TABLE
postgres_looker-# \q
14. Integra Looker con il database Postgres postgres
Nella sezione seguente utilizzerai la console Looker per creare una connessione al database all'istanza del database postgres on-premise.
Vai ad ADMIN → DATABASE → CONNECTIONS (AMMINISTRAZIONE → DATABASE → CONNESSIONI) → seleziona ADD CONNECTION (AGGIUNGI CONNESSIONE).
Compila i dettagli della connessione come nello screenshot riportato di seguito, seleziona CONNETTI

La connessione è ora configurata

15. Convalidare la connettività di Looker
Nella sezione seguente imparerai a convalidare la connettività di Looker al database postgres nel VPC on-premise utilizzando l'azione "test" di Looker e TCPDUMP.
Da Cloud Shell, accedi al database postgres se la sessione è scaduta.
In Cloud Shell, esegui le seguenti operazioni:
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region
gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"
Dal sistema operativo, crea un filtro TCPDUMP con la subnet solo proxy 10.10.10.0/24
sudo tcpdump -i any net 10.10.10.0/24 -nn
Vai a Connessione dati AMMINISTRAZIONE → DATABASE → CONNESSIONI → postgres-database → Test
Una volta selezionato Test, Looker si connetterà al database postgres come indicato di seguito:

Esegui la pulizia
Elimina i componenti del lab da un singolo terminale Cloud Shell
gcloud compute service-attachments delete onpremdatabase1-svc-attachment --region=$region -q
gcloud compute forwarding-rules delete producer-hybrid-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 looker-psc-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies associations delete --firewall-policy=looker-psc-demo-policy --name=looker-psc-demo --global-firewall-policy -q
gcloud compute network-firewall-policies delete looker-psc-demo-policy --global -q
gcloud compute routers nats delete on-prem-nat --router=on-prem-cr --router-region=$region -q
gcloud compute network-endpoint-groups delete on-prem-hybrid-neg --zone=$zone -q
gcloud compute addresses delete hybrid-neg-lb-ip --region=$region -q
gcloud compute vpn-tunnels delete looker-psc-demo-tunnel0 looker-psc-demo-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=$region -q
gcloud compute vpn-gateways delete looker-psc-demo-vpn-gw on-prem-vpn-gw --region=$region -q
gcloud compute routers delete looker-psc-demo-cr on-prem-cr --region=$region -q
gcloud compute instances delete postgres-database --zone=$zone -q
gcloud compute addresses delete on-prem-database1-ip --region=$region -q
gcloud compute networks subnets delete database-subnet --region=$region -q
gcloud compute network-firewall-policies rules delete 2001 --firewall-policy on-prem-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies rules delete 1000 --firewall-policy on-prem-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies associations delete --firewall-policy=on-prem-demo-policy --name=on-prem-demo --global-firewall-policy -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 delete on-prem-demo -q
gcloud compute networks delete looker-psc-demo -q
16. Complimenti
Congratulazioni, hai configurato e convalidato correttamente la connettività al database on-premise tramite la VPN ad alta disponibilità utilizzando la console Looker basata su Private Service Connect.
Hai creato l'infrastruttura del producer, hai imparato a creare un NEG ibrido, un servizio producer e un endpoint PSC di Looker che consentono la connettività al servizio producer.
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
- Connettiti ai servizi on-prem tramite networking ibrido utilizzando Private Service Connect e un bilanciatore del carico proxy TCP interno
- Accesso a tutti i codelab di Private Service Connect pubblicati