1. Introduzione
In questo codelab eseguirai una connessione southbound a un database PostgreSQL on-premise tramite VPN ad alta disponibilità utilizzando un bilanciatore del carico proxy TCP interno e un gruppo di endpoint di rete ibrida invocato da Looker PSC come consumatore di servizi.
Private Service Connect è una funzionalità della rete di Google Cloud che consente ai consumer di accedere ai servizi gestiti in privato dall'interno della loro rete VPC. Analogamente, 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, sei il consumer del servizio e Google è il producer del servizio, 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 produttore 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 è implementato Looker PSC, come evidenziato nella Figura 2.
Figura 2.
Cosa imparerai a fare
- Requisiti di rete
- Creare un servizio producer di Private Service Connect
- Creare un endpoint Private Service Connect in Looker
- Stabilire la connettività al database PostgreSQL on-premise da Looker utilizzando una connessione di prova
Che cosa ti serve
- Progetto Google Cloud con autorizzazioni di proprietario
- Istanza PSC Looker esistente
2. Cosa creerai
Stabilirai una rete di produttori, looker-psc-demo, per implementare il bilanciatore del carico proxy TCP interno e il NEG ibrido pubblicato come servizio tramite Private Service Connect (PSC). Per dimostrare un database on-premise, esegui il deployment di un VPC on-prem-demo connesso al VPC looker-psc-demo utilizzando la VPN ad alta disponibilità.
Per convalidare l'accesso al servizio Producer, esegui le seguenti azioni:
- Crea un endpoint PSC in Looker associato al collegamento del servizio del produttore
- Utilizza la console di Looker per eseguire una convalida della connessione al database PostgreSQL on-premise
3. Requisiti di rete
Di seguito è riportata la suddivisione dei requisiti di rete per la rete del produttore. Il consumatore 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 della rete VPC del consumer vengono tradotti utilizzando il NAT di origine (SNAT) in modo che i relativi indirizzi IP di origine originali vengano convertiti in indirizzi IP di origine della subnet NAT nella rete VPC del producer. |
Subnet della regola di inoltro 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 ogni proxy del bilanciatore del carico viene assegnato un indirizzo IP interno. I pacchetti inviati da un proxy a un endpoint o a una VM di backend hanno un indirizzo IP di origine della subnet solo proxy. |
NEG ibrido | I servizi on-premise e di altri cloud vengono trattati come qualsiasi altro backend di bilanciamento del carico di Cloud. 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 disponibilità tra reti VPC Google Cloud. In questa topologia, puoi connettere due reti VPC Google Cloud utilizzando un gateway VPN ad alta disponibilità in ogni rete. Le reti VPC possono trovarsi nella stessa regione o in più regioni. |
Cloud NAT | Utilizzato dalla VPC on-prem-demo per l'uscita su internet |
4. Topologia del codelab
5. Configurazione e requisiti
Configurazione dell'ambiente a tuo ritmo
- 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 al progetto. Si tratta di una stringa di caratteri non utilizzata dalle API di Google. Puoi sempre aggiornarlo.
- L'ID progetto è univoco per 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 interessa quale sia. Nella maggior parte dei codelab, dovrai fare riferimento al tuo ID progetto (in genere identificato come
PROJECT_ID
). Se l'ID generato non ti piace, puoi generarne un altro casuale. In alternativa, puoi provare il tuo e vedere se è disponibile. Non può essere modificato dopo questo passaggio e rimane invariato per tutta la durata del progetto. - Per tua informazione, esiste un terzo valore, un Numero 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 API/risorse Cloud. La partecipazione a questo codelab non ha costi, o quasi. Per arrestare le risorse ed evitare di incorrere in fatturazione al termine di questo tutorial, puoi eliminare le risorse che hai creato o il progetto. I nuovi utenti di Google Cloud sono idonei al programma Prova senza costi di 300$.
Avvia Cloud Shell
Sebbene Google Cloud possa essere utilizzato 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:
Dovrebbe richiedere solo pochi istanti per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere qualcosa di simile a questo:
Questa macchina virtuale contiene tutti gli strumenti di sviluppo di cui avrai bisogno. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud, migliorando notevolmente le prestazioni e l'autenticazione di rete. Tutto il lavoro in questo codelab può essere svolto in 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 la rete VPC del producer
Rete VPC
In Cloud Shell, svolgi i seguenti passaggi:
gcloud compute networks create looker-psc-demo --subnet-mode custom
Creare subnet
La subnet del PSC verrà associata al collegamento del servizio PSC ai fini della Network Address Translation.
In Cloud Shell, crea la subnet NAT del 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 inoltro 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 il tipo di endpoint di rete su NON_GCP_PRIVATE_IP_PORT
In Cloud Shell, crea un gruppo di elenchi di negazioni ibride 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 porta 5432, generato 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
Creare un controllo di integrità a livello di regione
In Cloud Shell, crea un controllo di integrità che esamini la porta del database on-prem 5432:
gcloud compute health-checks create tcp on-prem-5432-healthcheck \
--region=$region \
--port=5432
Creare criteri firewall di rete e regole firewall
In Cloud Shell, svolgi i seguenti passaggi:
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 della subnet NAT del PSC a tutte le istanze della rete.
In Cloud Shell, svolgi i seguenti passaggi:
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
Creare 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 seguente sintassi, crea una regola di inoltro (bilanciatore del carico proxy TCP interno).
In Cloud Shell, svolgi i seguenti passaggi:
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
Creare un collegamento al servizio
In Cloud Shell, crea il collegamento al 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 prendi nota del collegamento al servizio elencato nell'URI selfLink a partire dai progetti per configurare l'endpoint PSC in Looker.
selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/onpremdatabase1-svc-attachment
In Cloud Shell, svolgi i seguenti passaggi:
gcloud compute service-attachments describe onpremdatabase1-svc-attachment --region=$region
Esempio di output 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. Stabilire una connessione all'endpoint PSC in Looker
Nella sezione seguente, assocerai il collegamento a un servizio dei produttori a PSC di Looker Core tramite l'utilizzo dei flag –psc-service-attachment in Cloud Shell per un singolo dominio.
In Cloud Shell, crea l'associazione psc aggiornando i seguenti parametri in base 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
- REGION: la regione in cui è ospitata l'istanza di Looker (Google Cloud core).
In Cloud Shell, svolgi i seguenti passaggi:
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, convalida che lo stato di connessione dei collegamenti a un servizio sia "ACCEPTED", aggiornalo 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 nella console Cloud
Dalla console Cloud puoi convalidare la connessione al PSC
In Cloud Console, vai a:
Looker → Istanza Looker → Dettagli
Crea la rete VPC on-prem
Rete VPC
In Cloud Shell, svolgi i seguenti passaggi:
gcloud compute networks create on-prem-demo --project=$project --subnet-mode=custom
Crea la subnet del database PostgreSQL
In Cloud Shell, svolgi i seguenti passaggi:
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 del database Postgres 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"
Creare criteri firewall di rete e regole firewall
In Cloud Shell, svolgi i seguenti passaggi:
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 applica 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, svolgi i seguenti passaggi:
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 della subnet solo proxy a tutte le istanze della rete.
In Cloud Shell, svolgi i seguenti passaggi:
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 protocollo BGP (Border Gateway Protocol).
Cloud Router può configurare una sessione BGP su un tunnel Cloud VPN per connettere le tue reti. Apprende automaticamente i nuovi intervalli di indirizzi IP delle subnet e li annuncia alla rete di peer.
Nei passaggi seguenti eseguirai il deployment di una VPN ad alta disponibilità 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 disponibilità per looker-psc-demo
Quando viene creato ogni gateway, vengono assegnati automaticamente due indirizzi IPv4 esterni, uno per ogni interfaccia del gateway.
In Cloud Shell, crea il gateway VPN ad alta disponibilità:
gcloud compute vpn-gateways create looker-psc-demo-vpn-gw \
--network=looker-psc-demo \
--region=$region
Crea il gateway VPN ad alta disponibilità per la demo on-prem
Quando viene creato ogni gateway, vengono assegnati automaticamente due indirizzi IPv4 esterni, uno per ogni interfaccia del gateway.
In Cloud Shell, crea il gateway VPN ad alta disponibilità:
gcloud compute vpn-gateways create on-prem-vpn-gw \
--network=on-prem-demo\
--region=$region
Convalida la creazione del gateway VPN ad alta disponibilità
Nella console, vai a CONNESSIBILITÀ 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
Dovrai creare due tunnel VPN su ogni gateway VPN ad alta disponibilità.
Crea tunnel VPN0
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
Dovrai creare due tunnel VPN su ogni gateway VPN ad alta disponibilità.
Crea tunnel VPN0
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
Nella console, vai a CONNESSIBILITÀ IBRIDA → VPN → TUNNEL VPN CLOUD.
11. Stabilire 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
Creare un'interfaccia BGP e un 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 CONNEVITÀ IBRIDA → VPN per visualizzare i dettagli del tunnel VPN.
Convalida i percorsi appresi da looker-psc-demo tramite VPN ad alta disponibilità
Ora che i tunnel VPN ad alta disponibilità e le sessioni BGP sono stati stabiliti, il comportamento predefinito del router Cloud è annunciare le route delle subnet. Visualizza le route apprese di looker-psc-demo.
Nella console, vai a Rete VPC → Reti VPC → looker-psc-demo → ROUTER → REGIONE → VISTA
Nota 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 disponibilità
Poiché il comportamento predefinito del router Cloud è pubblicizzare tutte le subnet, la subnet solo proxy viene pubblicizzata tramite BGP. Il NEG ibrido utilizzerà la subnet solo proxy come indirizzo di origine per la comunicazione con il server onprem.database1.com.
Nota che on-prem-demo ha appreso la subnet solo proxy 10.10.10.0/24 da looker-psc-demo.
Nella console, vai a Rete VPC → Reti VPC → on-prem-demo → ROUTES → REGION → VIEW
12. Creazione del database Postgres di Looker
Nella sezione seguente, eseguirai un accesso SSH alla VM postgres-database utilizzando Cloud Shell.
In Cloud Shell, esegui un comando ssh per connetterti all'istanza del database postgres**:**
gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"
All'interno del sistema operativo, identifica e prendi nota dell'indirizzo IP (ens4) dell'istanza del database postgres:
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 la richiesta 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 del database postgres (192.168.10.4) e la subnet solo proxy (10.10.10.0/24) nel file pg_hba.conf nelle connessioni locali IPv4.
sudo nano /etc/postgresql/15/main/pg_hba.conf
Lo screenshot di seguito mostra l'aggiornamento completato:
Nella sezione seguente, rimuovi il commento da postgresql.conf per ascoltare tutti gli indirizzi IP "*" come mostrato nello screenshot di seguito:
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, convalida lo stato di postgresql come attivo:
sudo service postgresql status
Esempio:
All'interno del sistema operativo, convalida lo stato di postgresql come 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 lo schema looker_schema utilizzato per convalidare la connettività di Looker alla rete 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. Integrare Looker con il database postgres-database di Postgres
Nella sezione seguente utilizzerai la console di Looker per creare una connessione al database con l'istanza del database postgres on-premise.
Vai ad AMMINISTRAZIONE → DATABASE → CONNESSIONI → seleziona AGGIUNGI CONNESSIONE.
Compila i dettagli della connessione come indicato nello screenshot di seguito, quindi seleziona COLLEGA.
La connessione è ora configurata
15. Convalida la connettività di Looker
Nella sezione seguente imparerai a convalidare la connettività di Looker al database postgres nella VPC on-premise utilizzando l'azione "test" di Looker e TCPDUMP.
Da Cloud Shell, accedi al database postgres se la sessione ha superato il tempo di attesa.
In Cloud Shell, svolgi i seguenti passaggi:
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 alla connessione dati AMMINISTRAZIONE → DATABASE → CONNESSIONI → postgres-database → Test
Una volta selezionato Test, Looker si connette al database postgres come indicato di seguito:
Esegui la pulizia
Eliminare 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 VPN ad alta disponibilità utilizzando Looker Console basata su Private Service Connect.
Hai creato l'infrastruttura del producer, hai imparato a creare un endpoint NEG ibrido, un servizio di produzione e un endpoint PSC di Looker che consentisse la connettività al servizio di produzione.
Cosmopup pensa che i codelab siano fantastici.
Passaggi successivi
Dai un'occhiata ad alcuni di questi codelab…
- Utilizzare Private Service Connect per pubblicare e utilizzare i servizi
- Connettersi ai servizi on-premise tramite Hybrid Networking utilizzando Private Service Connect e un bilanciatore del carico proxy TCP interno
- Accesso a tutti i codelab di Private Service Connect pubblicati