NEG ibrido in direzione sud di Looker PSC verso on-premise

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.

145ea4672c3a3b14.png

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.

259493afd914f68b.png

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

def88091b42bfe4d.png

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

  • Cloud NAT si basa sui router Cloud per le funzionalità del control plane, ma non per la gestione delle sessioni BGP.
  • Il router Cloud viene utilizzato per il BGP stabilito per la creazione di HA VPN tra i VPC psc-looker-demo e on-prem-demo.

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

79aeb28b38f237da.png

5. Configurazione e requisiti

Configurazione dell'ambiente autonomo

  1. 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.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • 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.
  1. 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:

55efc1aaa7a4d3ad.png

Bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere un risultato simile a questo:

7ffe5cbb04455448.png

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

9f436251a3ae2cc7.png

4c3e8e73d40d1238.png

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

2d4684d722d31e4b.png

993cdaf748f4c030.png

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.

7f1b504616504866.png

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.

c2fcb340a7614070.png

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.

78ab590317919bf5.png

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.

c11a11ed8b0491c8.png

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

b0073faed026931f.png

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: eaff2ed6d27fa7cc.png

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:

65e0b1074dc48644.png

Dopo:

14a0d1fa5455e23e.png

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

5900fdf0b698cbfc.png

La connessione è ora configurata

4817157fd3b1277e.png

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:

774f9313ece41034.png

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.

c911c127bffdee57.jpeg

Passaggi successivi

Dai un'occhiata ad alcuni di questi codelab...

Ulteriori letture e video

Documentazione di riferimento