1. Einführung
In diesem Codelab stellen Sie über H-VPN eine Downstream-Verbindung zu einer lokalen PostgreSQL-Datenbank her. Dazu verwenden Sie einen internen TCP-Proxy-Load-Balancer und eine hybride Netzwerk-Endpunktgruppe, die von Looker PSC als Dienstnutzer aufgerufen wird.
Private Service Connect ist eine Funktion des Google Cloud-Netzwerks, mit der Nutzer privat aus ihrem VPC-Netzwerk auf verwaltete Dienste zugreifen können. Ebenso können Ersteller verwalteter Dienste diese Dienste in ihren eigenen separaten VPC-Netzwerken hosten und ihren Nutzern eine private Verbindung bieten. Wenn Sie beispielsweise Private Service Connect für den Zugriff auf Looker verwenden, sind Sie der Dienstnutzer und Google der Dienstersteller, wie in Abbildung 1 dargestellt.
Abbildung 1:

Der Southbound-Zugriff, auch als Reverse-PSC bezeichnet, ermöglicht es dem Nutzer, einen veröffentlichten Dienst als Ersteller zu erstellen, damit Looker auf Endpunkte lokal, in einer VPC, auf verwaltete Dienste und auf die Hybridumgebung zugreifen kann. Southbound-Verbindungen können in jeder Region bereitgestellt werden, unabhängig davon, wo Looker PSC bereitgestellt wird, wie in Abbildung 2 dargestellt.
Abbildung 2.

Lerninhalte
- Netzwerkanforderungen
- Private Service Connect-Producer-Dienst erstellen
- Private Service Connect-Endpunkt in Looker erstellen
- Verbindung zur lokalen Postgres-Datenbank über Looker mit einer Testverbindung herstellen
Voraussetzungen
- Google Cloud-Projekt mit Inhaberberechtigungen
- Bestehende Looker PSC-Instanz

2. Aufgaben
Sie richten ein Producer-Netzwerk (looker-psc-demo) ein, um einen internen TCP-Proxy-Load-Balancer und ein Hybrid-NEG bereitzustellen, das als Dienst über Private Service Connect (PSC) veröffentlicht wird. Um eine lokale Datenbank zu demonstrieren, stellen Sie eine lokale Demo-VPC bereit, die über HA VPN mit der Looker-PSC-Demo-VPC verbunden ist.
Sie führen die folgenden Aktionen aus, um den Zugriff auf den Producer-Dienst zu validieren:
- PSC-Endpunkt in Looker erstellen, der dem Dienstanhang des Diensterstellers zugeordnet ist
- Mit der Looker-Konsole eine Verbindungsvalidierung für die lokale Postgres-Datenbank durchführen
3. Netzwerkanforderungen
Unten finden Sie die Aufschlüsselung der Netzwerkanforderungen für das Erstellernetzwerk. Der Nutzer in diesem Codelab ist die Looker PSC-Instanz.
Komponenten | Beschreibung |
VPC (looker-psc-demo) | VPC im benutzerdefinierten Modus |
VPC (on-prem-demo) | VPC im benutzerdefinierten Modus |
PSC-NAT-Subnetz | Pakete aus dem VPC-Netzwerk des Nutzers werden mithilfe von Quell-NAT (SNAT) übersetzt, sodass ihre ursprünglichen Quell-IP-Adressen in Quell-IP-Adressen aus dem NAT-Subnetz im VPC-Netzwerk des Erstellers umgewandelt werden. |
Subnetz der PSC-Weiterleitungsregel | Wird verwendet, um eine IP-Adresse für den regionalen internen TCP-Proxy-Load-Balancer zuzuweisen. |
PSC-NEG-Subnetz | Wird verwendet, um eine IP-Adresse für die Netzwerk-Endpunktgruppe zuzuweisen. |
Nur-Proxy-Subnetz | Jedem der Proxys des Load-Balancers wird eine interne IP-Adresse zugewiesen. Pakete, die von einem Proxy an eine Backend-VM oder einen Backend-Endpunkt gesendet werden, haben eine Quell-IP-Adresse aus dem Nur-Proxy-Subnetz. |
Hybrid-NEG | Die Konfiguration von lokalen und anderen Cloud-Diensten entspricht grundsätzlich dem anderer Cloud Load Balancing-Back-Ends. Der Hauptunterschied besteht darin, dass Sie für die Konfiguration der Endpunkte dieser Back-Ends eine Hybridkonnektivitäts-NEG verwenden. Die Endpunkte müssen gültige IP-Adresse:Port-Kombinationen sein, die Ihr Load Balancer mithilfe von Hybridkonnektivitätsprodukten wie Cloud VPN oder Cloud Interconnect erreichen kann. |
Backend-Dienst | Ein Back-End-Dienst fungiert als Brücke zwischen Ihrem Load-Balancer und Ihren Back-End-Ressourcen. Im Tutorial ist der Back-End-Dienst mit der hybriden NEG verknüpft. |
Cloud Router |
|
HA-VPN | HA VPN zwischen Google Cloud-Netzwerken In dieser Topologie können Sie zwei Google Cloud VPC-Netzwerke verbinden, indem Sie ein HA VPN-Gateway in jedem Netzwerk verwenden. Die VPC-Netzwerke können in derselben Region oder in mehreren Regionen liegen. |
Cloud NAT | Wird von der VPC „on-prem-demo“ für ausgehenden Internet-Traffic verwendet |
4. Codelab-Topologie

5. Einrichtung und Anforderungen
Umgebung zum selbstbestimmten Lernen einrichten
- Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.



- Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es handelt sich um einen String, der nicht von Google APIs verwendet wird. Sie können sie jederzeit aktualisieren.
- Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich (kann nach dem Festlegen nicht mehr geändert werden). In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser String aussieht. In den meisten Codelabs müssen Sie auf Ihre Projekt-ID verweisen (in der Regel als
PROJECT_IDangegeben). Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige ID generieren. Alternativ können Sie es mit einem eigenen Namen versuchen und sehen, ob er verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen. - Zur Information: Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs zu verwenden. Die Durchführung dieses Codelabs kostet wenig oder gar nichts. Wenn Sie Ressourcen herunterfahren möchten, um Kosten zu vermeiden, die über diese Anleitung hinausgehen, können Sie die erstellten Ressourcen oder das Projekt löschen. Neue Google Cloud-Nutzer können am kostenlosen Testzeitraum mit einem Guthaben von 300$ teilnehmen.
Cloud Shell starten
Während Sie Google Cloud von Ihrem Laptop aus per Fernzugriff nutzen können, wird in diesem Codelab Google Cloud Shell verwendet, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.
Klicken Sie in der Google Cloud Console rechts oben in der Symbolleiste auf das Cloud Shell-Symbol:

Die Bereitstellung und Verbindung mit der Umgebung sollte nur wenige Augenblicke dauern. Anschließend sehen Sie in etwa Folgendes:

Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Alle Aufgaben in diesem Codelab können in einem Browser ausgeführt werden. Sie müssen nichts installieren.
6. Hinweis
APIs aktivieren
Prüfen Sie in Cloud Shell, ob Ihre Projekt-ID eingerichtet ist:
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
Aktivieren Sie alle erforderlichen Dienste:
gcloud services enable compute.googleapis.com
7. Ersteller-VPC-Netzwerk erstellen
VPC-Netzwerk
Führen Sie in Cloud Shell folgende Schritte aus:
gcloud compute networks create looker-psc-demo --subnet-mode custom
Subnetze erstellen
Das PSC-Subnetz wird zum Zweck der Network Address Translation dem PSC-Dienstanhang zugeordnet.
Erstellen Sie in Cloud Shell das PSC-NAT-Subnetz:
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
Erstellen Sie in Cloud Shell das Subnetz für die Weiterleitungsregel des Producers:
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
Erstellen Sie in Cloud Shell das regionale Nur-Proxy-Subnetz für den 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
IP-Adresse des Load-Balancers reservieren
Reservieren Sie in Cloud Shell eine interne IP-Adresse für den Load Balancer:
gcloud compute addresses create hybrid-neg-lb-ip \
--region=$region \
--subnet=producer-psc-fr-subnet
Sehen Sie sich in Cloud Shell die reservierte IP-Adresse an.
gcloud compute addresses describe hybrid-neg-lb-ip \
--region=$region | grep -i address:
Beispielausgabe:
gcloud compute addresses describe hybrid-neg-lb-ip --region=$region | grep -i address:
address: 172.16.20.2
Hybrid-NEG einrichten
Hybrid-NEG erstellen und „–network-endpoint-type“ auf „NON_GCP_PRIVATE_IP_PORT“ festlegen
Erstellen Sie in Cloud Shell ein Hybrid-NEG für den Zugriff auf die lokale Datenbank:
gcloud compute network-endpoint-groups create on-prem-hybrid-neg \
--network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
--network=looker-psc-demo \
--zone=$zone
Aktualisieren Sie in Cloud Shell die Hybrid-NEG mit der IP-Adresse und dem Port der lokalen Datenbank (192.168.10.4 und Port 5432), die in einem späteren Schritt der Anleitung generiert werden:
gcloud compute network-endpoint-groups update on-prem-hybrid-neg \
--add-endpoint=ip=192.168.10.4,port=5432 \
--zone=$zone
Regionale Systemdiagnose erstellen
Erstellen Sie in Cloud Shell eine Systemdiagnose, die den On-Premise-Datenbankport 5432 prüft:
gcloud compute health-checks create tcp on-prem-5432-healthcheck \
--region=$region \
--port=5432
Netzwerk-Firewallrichtlinie und Firewallregeln erstellen
Führen Sie in Cloud Shell folgende Schritte aus:
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
Die folgende Firewallregel lässt Traffic vom PSC-NAT-Subnetzbereich zu allen Instanzen im Netzwerk zu.
Führen Sie in Cloud Shell folgende Schritte aus:
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. Producer-Dienst erstellen
Load Balancer-Komponenten erstellen
Erstellen Sie in Cloud Shell einen Back-End-Dienst:
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
Fügen Sie in Cloud Shell dem Backend-Dienst das hybride NEG-Backend hinzu:
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
Erstellen Sie in Cloud Shell einen Ziel-TCP-Proxy, um Anfragen an Ihren Backend-Dienst weiterzuleiten:
gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
--backend-service=producer-backend-svc \
--region=$region
Erstellen Sie mit der folgenden Syntax eine Weiterleitungsregel (interner TCP-Proxy-Load-Balancer).
Führen Sie in Cloud Shell folgende Schritte aus:
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
Dienstanhang erstellen
Erstellen Sie in Cloud Shell die Service Attachment „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
Rufen Sie als Nächstes den Dienstanhang ab, der im selfLink-URI aufgeführt ist, der mit „projects“ beginnt, und notieren Sie ihn, um den PSC-Endpunkt in Looker zu konfigurieren.
selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/onpremdatabase1-svc-attachment
Führen Sie in Cloud Shell folgende Schritte aus:
gcloud compute service-attachments describe onpremdatabase1-svc-attachment --region=$region
Beispiel für die erwartete Ausgabe:
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
Rufen Sie in der Cloud Console Folgendes auf:
„Network Services“ → „Private Service Connect“ → „Published Services“


9. PSC-Endpunktverbindung in Looker herstellen
Im folgenden Abschnitt verknüpfen Sie den Dienstanhang des Erstellers mit Looker Core PSC, indem Sie die Flags „–psc-service-attachment“ in Cloud Shell für eine einzelne Domain verwenden.
Erstellen Sie in Cloud Shell die PSC-Zuordnung, indem Sie die folgenden Parameter an Ihre Umgebung anpassen:
- INSTANCE_NAME: Der Name Ihrer Looker (Google Cloud Core)-Instanz.
- DOMAIN_1: onprem.database1.com
- SERVICE_ATTACHMENT_1: URI, der beim Erstellen des Dienstanhangs erfasst wurde, onpremdatabase1-svc-attachment
- REGION: Die Region, in der Ihre Looker (Google Cloud Core)-Instanz gehostet wird.
Führen Sie in Cloud Shell folgende Schritte aus:
gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION
Beispiel:
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
Prüfen Sie in Cloud Shell, ob der connectionStatus von serviceAttachments auf „ACCEPTED“ gesetzt ist. Aktualisieren Sie den Namen Ihrer Looker PSC-Instanz:
gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json
Beispiel:
gcloud looker instances describe looker-psc-instance --region=$region --format=json
Beispiel:
{
"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"
}
PSC-Endpunkt in der Cloud Console validieren
Sie können die PSC-Verbindung über die Cloud Console validieren.
Rufen Sie in der Cloud Console Folgendes auf:
„Looker“ → „Looker-Instanz“ → „Details“


Lokales VPC-Netzwerk erstellen
VPC-Netzwerk
Führen Sie in Cloud Shell folgende Schritte aus:
gcloud compute networks create on-prem-demo --project=$project --subnet-mode=custom
Postgresql-Datenbank-Subnetz erstellen
Führen Sie in Cloud Shell folgende Schritte aus:
gcloud compute networks subnets create database-subnet --project=$project --range=192.168.10.0/28 --network=on-prem-demo --region=$region
Reservieren Sie in Cloud Shell eine interne IPv4-Adresse, die für onprem.database1.com, 192.168.10.4 verwendet wird:
gcloud compute addresses create on-prem-database1-ip --region=$region --subnet=database-subnet --addresses 192.168.10.4
Cloud Router für die VPC „on-prem-demo“ erstellen
Cloud NAT wird im Tutorial für die Installation von Softwarepaketen verwendet, da die VM-Instanz keine externe IP-Adresse hat.
Erstellen Sie in Cloud Shell den Cloud Router, der mit Cloud NAT und HA VPN verwendet wird:
gcloud compute routers create on-prem-cr \
--region=$region \
--network=on-prem-demo \
--asn=65002
Erstellen Sie das NAT-Gateway in Cloud Shell:
gcloud compute routers nats create on-prem-nat --router=on-prem-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region $region
Datenbank-Testinstanz erstellen
Erstellen Sie eine postgres-Datenbankinstanz, die zum Testen und Validieren der Verbindung zu Looker verwendet wird.
Erstellen Sie die Instanz in Cloud Shell:
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"
Netzwerk-Firewallrichtlinie und Firewallregeln erstellen
Führen Sie in Cloud Shell folgende Schritte aus:
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
Damit IAP eine Verbindung zu Ihren VM-Instanzen herstellen kann, erstellen Sie eine Firewallregel, die:
- Gilt für alle VM-Instanzen, die über IAP zugänglich sein sollen.
- Lässt eingehenden Traffic aus dem IP-Bereich 35.235.240.0/20 zu. Dieser Bereich enthält alle IP-Adressen, die IAP für die TCP-Weiterleitung verwendet.
Führen Sie in Cloud Shell folgende Schritte aus:
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
Die folgende Firewallregel lässt Traffic aus dem Nur-Proxy-Subnetzbereich zu allen Instanzen im Netzwerk zu.
Führen Sie in Cloud Shell folgende Schritte aus:
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. Hybridkonnektivität
Im folgenden Abschnitt erstellen Sie einen Cloud Router, mit dem Sie Routen zwischen Ihrer Virtual Private Cloud (VPC) und dem Peer-Netzwerk dynamisch über das Border Gateway Protocol (BGP) austauschen können.
Mit Cloud Router kann eine BGP-Sitzung über einen Cloud VPN-Tunnel eingerichtet werden, um Ihre Netzwerke zu verbinden. Es erkennt automatisch neue Subnetz-IP-Adressbereiche und kündigt sie in Ihrem Peer-Netzwerk an.
In den folgenden Schritten stellen Sie HA VPN zwischen der VPC „looker-psc-demo“ und der VPC „on-prem-demo“ bereit, um die Hybrid-NEG-Verbindung zu „onprem.database1.com“ zu demonstrieren.
Erstellen Sie das HA VPN-Gateway für looker-psc-demo.
Beim Erstellen der Gateways werden automatisch zwei externe IPv4-Adressen zugewiesen, eine für jede Gateway-Schnittstelle.
Erstellen Sie in Cloud Shell das HA VPN-Gateway:
gcloud compute vpn-gateways create looker-psc-demo-vpn-gw \
--network=looker-psc-demo \
--region=$region
HA VPN-Gateway für on-prem-demo erstellen
Beim Erstellen der Gateways werden automatisch zwei externe IPv4-Adressen zugewiesen, eine für jede Gateway-Schnittstelle.
Erstellen Sie in Cloud Shell das HA VPN-Gateway:
gcloud compute vpn-gateways create on-prem-vpn-gw \
--network=on-prem-demo\
--region=$region
Erstellung von HA VPN-Gateways validieren
Rufen Sie in der Console HYBRID CONNECTIVITY → VPN → CLOUD VPN GATEWAYS auf.

Cloud Router für looker-psc-demo erstellen
Erstellen Sie den Cloud Router in Cloud Shell:
gcloud compute routers create looker-psc-demo-cr \
--region=$region \
--network=looker-psc-demo\
--asn=65001
VPN-Tunnel für looker-psc-demo erstellen
Sie erstellen zwei VPN-Tunnel auf jedem HA VPN-Gateway.
VPN-Tunnel0 erstellen
Erstellen Sie in Cloud Shell 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
VPN-Tunnel 1 erstellen
Erstellen Sie in Cloud Shell den Tunnel 1:
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
VPN-Tunnel für on-prem-demo erstellen
Sie erstellen zwei VPN-Tunnel auf jedem HA VPN-Gateway.
VPN-Tunnel0 erstellen
Erstellen Sie in Cloud Shell 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
VPN-Tunnel 1 erstellen
Erstellen Sie in Cloud Shell den Tunnel 1:
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
Erstellung des VPN-Tunnels bestätigen
Rufen Sie in der Console HYBRID CONNECTIVITY → VPN → CLOUD VPN TUNNELS auf.

11. BGP-Nachbarn einrichten
BGP-Schnittstelle und ‑Peering für looker-psc-demo erstellen
Erstellen Sie in Cloud Shell die BGP-Schnittstelle:
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
Erstellen Sie in Cloud Shell den BGP-Peer:
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
Erstellen Sie in Cloud Shell die BGP-Schnittstelle:
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
Erstellen Sie in Cloud Shell den BGP-Peer:
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
BGP-Schnittstelle und ‑Peering für on-prem-demo erstellen
Erstellen Sie in Cloud Shell die BGP-Schnittstelle:
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
Erstellen Sie in Cloud Shell den BGP-Peer:
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
Erstellen Sie in Cloud Shell die BGP-Schnittstelle:
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
Erstellen Sie in Cloud Shell den BGP-Peer:
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
Rufen Sie Hybridkonnektivität → VPN auf, um die VPN-Tunneldetails aufzurufen.

Prüfen, ob looker-psc-demo Routen über HA VPN erlernt hat
Nachdem die HA VPN-Tunnel und BGP-Sitzungen eingerichtet sind, bewirbt der Cloud Router standardmäßig Subnetzrouten. Erkannte Routen für looker-psc-demo ansehen.
Rufen Sie in der Console VPC-Netzwerk → VPC-Netzwerke → looker-psc-demo → ROUTEN → REGION → ANSEHEN auf.
Prüfen Sie, ob looker-psc-demo das Datenbanksubnetz 192.168.10.0/28 von der VPC on-prem-demo gelernt hat.

Prüfen, ob die VPC „on-prem-demo“ Routen über HA VPN erlernt hat
Da der Cloud Router standardmäßig alle Subnetze bewirbt, wird nur das Proxy-Subnetz über BGP beworben. Das Hybrid-NEG verwendet das Nur-Proxy-Subnetz als Quelladresse, wenn es mit dem Server onprem.database1.com kommuniziert.
Das Nur-Proxy-Subnetz 10.10.10.0/24 wurde von „looker-psc-demo“ gelernt.
Rufen Sie in der Console VPC-Netzwerk → VPC-Netzwerke → on-prem-demo → ROUTEN → REGION → ANSEHEN auf.

12. Postgres-Datenbank in Looker erstellen
Im folgenden Abschnitt stellen Sie mit Cloud Shell eine SSH-Verbindung zur VM für die PostgreSQL-Datenbank her.
Führen Sie in Cloud Shell einen SSH-Befehl für die PostgreSQL-Datenbankinstanz aus**:
gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"
Ermitteln Sie im Betriebssystem die IP-Adresse (ens4) der postgres-Datenbankinstanz und notieren Sie sie:
ip a
Beispiel:
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
Melden Sie sich im Betriebssystem bei PostgreSQL an:
sudo -u postgres psql postgres
Geben Sie im Betriebssystem das Passwort ein:
\password postgres
Legen Sie im Betriebssystem das Passwort für Postgres fest (geben Sie zweimal dasselbe Passwort ein):
postgres
Beispiel:
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:
Beenden Sie Postgres im Betriebssystem:
\q
Beispiel:
postgres=# \q
user@postgres-database:~$
Im folgenden Abschnitt fügen Sie die IP-Adresse Ihrer postgres-Datenbankinstanz (192.168.10.4) und das Proxy-only-Subnetz (10.10.10.0/24) in der Datei „pg_hba.conf“ unter den lokalen IPv4-Verbindungen ein.
sudo nano /etc/postgresql/15/main/pg_hba.conf
Der Screenshot unten zeigt das abgeschlossene Update: 
Entfernen Sie im folgenden Abschnitt die Kommentarzeichen aus der Datei „postgresql.conf“, damit alle IP-Adressen „*“ überwacht werden.
sudo nano /etc/postgresql/15/main/postgresql.conf
Vorher:

Nachher:

Starten Sie den PostgreSQL-Dienst im Betriebssystem neu:
sudo service postgresql restart
Prüfen Sie im Betriebssystem, ob der PostgreSQL-Status „Aktiv“ lautet:
sudo service postgresql status
Beispiel:
Prüfen Sie im Betriebssystem, ob der PostgreSQL-Status „Aktiv“ lautet:
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. Postgres-Datenbank erstellen
Im folgenden Abschnitt erstellen Sie eine Postgres-Datenbank mit dem Namen „postgres_looker“ und das Schema „looker_schema“, mit denen die Verbindung von Looker zu lokalen Ressourcen validiert wird.
Melden Sie sich im Betriebssystem bei Postgres an:
sudo -u postgres psql postgres
Erstellen Sie die Datenbank im Betriebssystem:
create database postgres_looker;
Listen Sie die Datenbank im Betriebssystem auf:
\l
Erstellen Sie im Betriebssystem den Nutzer „postgres_looker“ mit dem Passwort „postgreslooker“:
create user postgres_looker with password 'postgreslooker';
Stellen Sie im Betriebssystem eine Verbindung zur Datenbank her:
\c postgres_looker;
Erstellen Sie im Betriebssystem das Schema „looker-schema“ und beenden Sie es, um zur Cloud Shell-Eingabeaufforderung zurückzukehren.
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
Beispiel:
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. Looker in die Postgres-Datenbank einbinden
Im folgenden Abschnitt verwenden Sie die Looker-Konsole, um eine Datenbankverbindung zur lokalen Postgres-Datenbankinstanz herzustellen.
Gehen Sie zu ADMINISTRATOR → DATENBANK → VERBINDUNGEN und wählen Sie VERBINDUNG HINZUFÜGEN aus.
Geben Sie die Verbindungsinformationen wie im Screenshot unten ein und wählen Sie VERBINDEN aus.

Die Verbindung ist jetzt konfiguriert.

15. Looker-Verbindung validieren
Im folgenden Abschnitt erfahren Sie, wie Sie die Looker-Verbindung zur Postgres-Datenbank in der On-Prem-VPC mit der Looker-Aktion „test“ und TCPDUMP validieren.
Melden Sie sich in Cloud Shell bei der postgres-Datenbank an, wenn die Sitzung abgelaufen ist.
Führen Sie in Cloud Shell folgende Schritte aus:
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"
Erstellen Sie im Betriebssystem einen TCPDUMP-Filter mit dem Nur-Proxy-Subnetz 10.10.10.0/24.
sudo tcpdump -i any net 10.10.10.0/24 -nn
Rufen Sie die Datenverbindung auf: ADMIN → DATABASE → CONNECTIONS → postgres-database → Test.
Wenn „Test“ ausgewählt ist, stellt Looker eine Verbindung zur PostgreSQL-Datenbank her, wie unten dargestellt:

Bereinigen
Lab-Komponenten über ein einzelnes Cloud Shell-Terminal löschen
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. Glückwunsch
Sie haben die Verbindung zur lokalen Datenbank über HA-VPN mit der Looker Console, die auf Private Service Connect basiert, erfolgreich konfiguriert und validiert.
Sie haben die Producer-Infrastruktur erstellt und gelernt, wie Sie eine Hybrid-NEG, einen Producer-Dienst und einen Looker-PSC-Endpunkt erstellen, der die Verbindung zum Producer-Dienst ermöglicht.
Cosmopup findet Codelabs toll!!

Nächste Schritte
Hier finden Sie einige Codelabs:
- Private Service Connect zum Veröffentlichen und Nutzen von Diensten verwenden
- Über Hybrid Networking mit Private Service Connect und einem internen TCP-Proxy-Load-Balancer mit lokalen Diensten verbinden
- Zugriff auf alle veröffentlichten Private Service Connect-Codelabs