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

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.

145ea4672c3a3b14.png

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.

259493afd914f68b.png

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

def88091b42bfe4d.png

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

  • 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 l'implementazione di VPN HA tra i VPC psc-looker-demo e on-prem-demo.

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

79aeb28b38f237da.png

5. Configurazione e requisiti

Configurazione dell'ambiente a tuo ritmo

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

55efc1aaa7a4d3ad.png

Dovrebbe richiedere solo pochi istanti per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere qualcosa di simile a questo:

7ffe5cbb04455448.png

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

9f436251a3ae2cc7.png

4c3e8e73d40d1238.png

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

2d4684d722d31e4b.png

993cdaf748f4c030.png

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.

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

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.

c2fcb340a7614070.png

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.

78ab590317919bf5.png

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.

c11a11ed8b0491c8.png

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

b0073faed026931f.png

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

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:

65e0b1074dc48644.png

Dopo:

14a0d1fa5455e23e.png

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.

5900fdf0b698cbfc.png

La connessione è ora configurata

4817157fd3b1277e.png

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:

774f9313ece41034.png

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.

c911c127bffdee57.jpeg

Passaggi successivi

Dai un'occhiata ad alcuni di questi codelab…

Letture e video di approfondimento

Documentazione di riferimento