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

1. Introduzione

In questo codelab, effettuerai una connessione verso sud a un database postgres on-premise su una VPN H utilizzando un bilanciatore del carico proxy tcp interno e un gruppo di endpoint di rete ibrido richiamato da Looker PSC as a Service Consumer.

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 loro consumer. Ad esempio, quando utilizzi Private Service Connect per accedere a Looker, 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 produttore per consentire a Looker di accedere agli endpoint on-premise, in un VPC, ai servizi gestiti e all'ambiente ibrido. Il deployment delle connessioni verso sud può essere eseguito in qualsiasi regione, indipendentemente da dove viene eseguito il deployment di Looker PSC, come evidenziato nella Figura 2.

Figura 2.

259493afd914f68b.png

Cosa imparerai a fare

  • Requisiti di rete
  • Crea un servizio producer di Private Service Connect
  • Crea un endpoint Private Service Connect in Looker
  • Stabilisci la connettività al database postgres 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 producer
  • Usa la console Looker per eseguire una convalida della connessione al database postgres on-premise

3. Requisiti di rete

Di seguito è riportata un'analisi dettagliata dei requisiti di rete per la rete Producer. Il consumer in questo codelab è l'istanza PSC di Looker.

Componenti

Descrizione

VPC (looker-psc-demo)

VPC in modalità personalizzata

VPC (demo on-prem)

VPC modalità personalizzata

Subnet NAT PSC

I pacchetti della rete VPC consumer vengono convertiti utilizzando il protocollo NAT (SNAT) di origine, in modo che gli 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 proxy TCP interno regionale

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 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 di altri cloud vengono trattati come qualsiasi altro backend di bilanciamento del carico di Cloud. La differenza fondamentale è 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 una VPN ad alta disponibilità tra i VPC psc-looker-demo e on-prem-demo.

VPN ad alta disponibilità

VPN ad alta disponibilità tra reti VPC di 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 dal VPC on-prem-demo per il traffico in uscita da internet

4. Topologia codelab

79aeb28b38f237da.png

5. Configurazione e requisiti

Configurazione dell'ambiente da seguire in modo 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 al progetto. Si tratta di una stringa di caratteri non utilizzata dalle API di Google. Puoi sempre aggiornarla.
  • L'ID progetto è univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo essere stato impostato). La console Cloud genera automaticamente una stringa univoca; di solito non ti importa cosa sia. Nella maggior parte dei codelab, dovrai fare riferimento al tuo ID progetto (in genere identificato come PROJECT_ID). Se l'ID generato non ti soddisfa, potresti generarne un altro casuale. In alternativa, puoi provarne una personalizzata per verificare se è disponibile. Non può essere modificato dopo questo passaggio e rimane invariato per tutta la durata del progetto.
  • Per informazione, c'è un terzo valore, il numero di 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 dopo questo tutorial, puoi eliminare le risorse che hai creato o eliminare 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.

Dalla 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 una schermata simile al seguente:

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 di rete e l'autenticazione. Tutto il lavoro in questo codelab può essere svolto all'interno di un browser. Non occorre installare nulla.

6. Prima di iniziare

Abilita API

All'interno di 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 PSC verrà associata al collegamento del servizio PSC ai fini della traduzione degli indirizzi di rete.

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 producer:

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 a livello di regione del producer:

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-prem:

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

Crea 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 sintassi seguente, crea una regola di forwarding (bilanciatore del carico proxy tcp interno).

In Cloud Shell, esegui queste 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

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/<id-progetto>/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

Nella console Cloud, 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 del servizio Producers a Looker Core PSC tramite i flag uso –psc-service-attachment in Cloud Shell per un singolo dominio.

All'interno di Cloud Shell, crea l'associazione psc aggiornando i parametri seguenti in modo che corrispondano al tuo ambiente:

  • INSTANCE_NAME: il nome della tua istanza di Looker (Google Cloud core).
  • DOMINIO_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, 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, verifica che lo stato della connessione serviceAttachments sia "ACCEPTED" (ACCETTATO) e 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 PSC

Nella console Cloud, 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

All'interno di Cloud Shell, esegui queste operazioni:

gcloud compute networks subnets create database-subnet --project=$project --range=192.168.10.0/28 --network=on-prem-demo --region=$region

All'interno di 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

Nel tutorial viene utilizzato Cloud NAT per l'installazione dei pacchetti 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

All'interno di Cloud Shell, esegui queste 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 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 di subnet solo proxy a tutte le istanze nella 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).

Il router Cloud può configurare una sessione BGP su un tunnel Cloud VPN per connettere le tue reti. Apprende automaticamente i nuovi intervalli di indirizzi IP della subnet e li annuncia alla rete 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 GW 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 GW VPN ad alta disponibilità per la demo on-prem-demo

Quando viene creato ciascun gateway, vengono automaticamente allocati 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

Creerai due tunnel VPN su ciascun 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

Utilizzando la console, vai a CONNETTIVITÀ IBRIDA → VPN → TUNNEL DI CLOUD VPN.

c2fcb340a7614070.png

11. Stabilisci vicini BGP

Crea un'interfaccia BGP e il 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 → ROUTES → REGION → VIEW

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 durante la comunicazione con il server onprem.database1.com.

Osservare on-prem-demo ha appreso proxy-only-subnet 10.10.10.0/24 da looker-psc-demo.

Utilizzando la console, vai a Rete VPC → Reti VPC → on-prem-demo → ROUTES → REGIONE → VISUALIZZA

b0073faed026931f.png

12. Creazione del database Postgres di Looker

Nella sezione seguente eseguirai una connessione 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 postgres-database (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 on-premise.

Nel sistema operativo, accedi a postgres:

sudo -u postgres psql postgres

Nel sistema operativo, crea il database:

create database postgres_looker;

Nel 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;

Nel 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-database di Postgres

Nella sezione seguente utilizzerai la console di Looker per creare una connessione al database dell'istanza 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. Convalidare la connettività di Looker

Nella sezione seguente imparerai a convalidare la connettività di Looker al database postgres-database nella VM on-prem-vpc utilizzando il "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 la connettività al database on-premise tramite VPN ad alta disponibilità utilizzando la console Looker basata su Private Service Connect.

Hai creato l'infrastruttura del producer e hai imparato a creare un NEG ibrido, un servizio producer e un endpoint PSC Looker che consentiva la connettività al servizio Producer.

Cosmopup pensa che i codelab siano fantastici.

c911c127bffdee57.jpeg

Passaggi successivi

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

Per approfondire Video

Documenti di riferimento