Looker Cloud über Hybridnetzwerke verbinden

1. Einführung

Looker (Google Cloud Core) bietet eine vereinfachte und optimierte Bereitstellung, Konfiguration und Verwaltung einer Looker-Instanz über die Google Cloud Console. Einige Verwaltungsaufgaben für Instanzen können auch über die Konsole ausgeführt werden.

Für Looker (Google Cloud Core)-Instanzen sind drei Netzwerkkonfigurationen verfügbar:

  • Öffentlich: Die Netzwerkverbindung verwendet eine externe, über das Internet zugängliche IP-Adresse.
  • Privat: Die Netzwerkverbindung verwendet eine interne, von Google gehostete VPC-IP-Adresse (Virtual Private Cloud).
  • Öffentlich und privat: Die Netzwerkverbindung verwendet sowohl eine öffentliche als auch eine private IP-Adresse. Eingehender Traffic wird über die öffentliche IP-Adresse und ausgehender Traffic über die private IP-Adresse weitergeleitet.

In dieser Anleitung stellen Sie ein umfassendes privates End-to-End-Netzwerk bereit, um die Looker-Verbindung zu einer lokalen VPC über HA VPN zu unterstützen. Dieses Netzwerk kann repliziert werden, um Ihre Anforderungen an die Multi-Cloud- und lokale Konnektivität zu erfüllen.

Looker (Google Cloud Core) unterstützt private IP-Adressen für Instanzen, die die folgenden Kriterien erfüllen:

Umfang

In dieser Anleitung erstellen Sie eine umfassende private Looker-Netzwerkbereitstellung in einer eigenständigen VPC mit Hybridkonnektivität zu Multi-Cloud- und lokalen Umgebungen.

Sie richten ein VPC-Netzwerk mit dem Namen on-prem-vpc ein, das eine lokale Umgebung darstellt. In Ihrer Bereitstellung ist „on-prem-vpc“ nicht vorhanden. Stattdessen wird ein Hybridnetzwerk zu Ihrem lokalen Rechenzentrum oder Cloud-Anbieter verwendet.

Im Folgenden sind die wichtigsten Schritte des Tutorials aufgeführt.

  1. Eigenständige VPC in „us-central1“ erstellen
  2. IP-Subnetz für den Zugriff auf private Dienste zuweisen
  3. Looker-Instanz in der eigenständigen VPC bereitstellen
  4. VPC „on-prem-vpc“ und Hybrid Networking erstellen
  5. Looker-IP-Bereich über BGP bewerben und validieren
  6. Looker- und PostgreSQL-Datenkommunikation einrichten und validieren

Figure1

8436cc4802b670db.png

Lerninhalte

  • VPC und zugehöriges Hybridnetzwerk erstellen
  • Looker in einer eigenständigen VPC bereitstellen
  • Lokales VPC-Netzwerk und zugehöriges Hybridnetzwerk erstellen
  • on-prem-vpc über HA VPN mit analytics-vps verbinden
  • Looker-Subnetze über Hybridnetzwerke bewerben
  • Hybride Netzwerkinfrastruktur überwachen
  • PostgreSQL-Datenbank in Looker Cloud Core einbinden

Voraussetzungen

  • Google Cloud-Projekt

IAM-Berechtigungen

2. Hinweis

Projekt für das Tutorial aktualisieren

In dieser Anleitung werden $variables verwendet, um die Implementierung der gcloud-Konfiguration in Cloud Shell zu erleichtern.

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

3. VPC einrichten

analytics-vpc erstellen

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud compute networks create analytics-vpc --project=$projectid --subnet-mode=custom

on-prem-vpc erstellen

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud compute networks create on-prem-vpc --project=$projectid --subnet-mode=custom

PostgreSQL-Datenbank-Subnetz erstellen

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud compute networks subnets create database-subnet-us-central1 --project=$projectid --range=172.16.10.0/27 --network=on-prem-vpc --region=us-central1

Cloud Router- und NAT-Konfiguration

Cloud NAT wird im Tutorial für die Installation von Softwarepaketen verwendet, da die Datenbank-VM-Instanz keine externe IP-Adresse hat.

Erstellen Sie den Cloud Router in Cloud Shell.

gcloud compute routers create on-prem-cr-us-central1-nat --network on-prem-vpc --region us-central1

Erstellen Sie das NAT-Gateway in Cloud Shell.

gcloud compute routers nats create on-prem-nat-us-central1 --router=on-prem-cr-us-central1-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

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=$projectid \
    --zone=us-central1-a \
    --machine-type=e2-medium \
    --subnet=database-subnet-us-central1 \
    --no-address \
   --image=projects/ubuntu-os-cloud/global/images/ubuntu-2304-lunar-amd64-v20230621 \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt -y install postgresql postgresql-client postgresql-contrib -y"

Firewallregeln erstellen

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.

Über Cloud Shell

gcloud compute firewall-rules create on-prem-ssh \
    --network on-prem-vpc --allow tcp:22 --source-ranges=35.235.240.0/20

4. Privater Dienstzugriff

Der Zugriff auf private Dienste ist eine private Verbindung zwischen Ihrem VPC-Netzwerk und einem Netzwerk von Google oder einem Drittanbieter. Google oder der Drittanbieter (Entitäten, die Dienste anbieten) werden auch als Dienstersteller bezeichnet. Looker Cloud Core ist ein Dienstproduzent.

Über die private Verbindung können VM-Instanzen in Ihrem VPC-Netzwerk und die Dienste, auf die Sie zugreifen, ausschließlich über interne IP-Adressen kommunizieren.

Wenn Sie den Zugriff auf private Dienste nutzen möchten, müssen Sie einen IP-Adressbereich (CIDR-Block) in Ihrem VPC-Netzwerk zuweisen und anschließend eine private Verbindung zu einem Dienstersteller erstellen.

IP-Adressbereich für Dienste zuweisen

Bevor Sie eine private Verbindung erstellen, müssen Sie einen IPv4-Adressbereich zuweisen, der vom VPC-Netzwerk des Diensterstellers verwendet werden soll. Dadurch wird sichergestellt, dass kein IP-Adressenkonflikt zwischen Ihrem VPC-Netzwerk und dem Netzwerk des Diensterstellers auftritt.

Wenn Sie einen Bereich in Ihrem VPC-Netzwerk zuweisen, ist dieser Bereich für Subnetze (primäre und sekundäre Bereiche) und Ziele von benutzerdefinierten statischen Routen nicht geeignet.

Die Verwendung von IPv6-Adressbereichen mit dem Zugriff auf private Dienste wird nicht unterstützt.

Aktivieren Sie die Service Networking API für Ihr Projekt in der Google Cloud Console. Wenn Sie die API aktivieren, müssen Sie die Seite der Console möglicherweise aktualisieren, um zu bestätigen, dass die API aktiviert wurde.

IP-Adresszuweisung erstellen

Legen Sie einen Adressbereich und eine Präfixlänge (Subnetzmaske) mit den Flags „addresses“ und „prefix-length“ fest. Wenn Sie beispielsweise den CIDR-Block 192.168.0.0/22 zuordnen möchten, geben Sie 192.168.0.0 für die Adresse und 22 für die Präfixlänge an.

Erstellen Sie in Cloud Shell die IP-Zuweisung für Looker.

gcloud compute addresses create psa-range-looker \
    --global \
    --purpose=VPC_PEERING \
    --addresses=192.168.0.0 \
    --prefix-length=22 \
    --description="psa range for looker" \
    --network=analytics-vpc

Prüfen Sie in Cloud Shell die IP-Zuweisung.

gcloud compute addresses list --global --filter="purpose=VPC_PEERING"

Beispiel:

userl@cloudshell$ gcloud compute addresses list --global --filter="purpose=VPC_PEERING"
NAME: psa-range-looker
ADDRESS/RANGE: 192.168.0.0/22
TYPE: INTERNAL
PURPOSE: VPC_PEERING
NETWORK: analytics-vpc
REGION: 
SUBNET: 
STATUS: RESERVED

Private Verbindung erstellen

Nachdem Sie einen zugewiesenen Bereich erstellt haben, können Sie eine private Verbindung zu einem Dienstersteller, Looker Cloud Core, herstellen. Die private Verbindung richtet nach der Einrichtung der Looker-Instanz eine VPC-Netzwerk-Peering-Verbindung zwischen Ihrem VPC-Netzwerk und dem Netzwerk des Diensterstellers ein.

Private Verbindungen erfolgen als 1:1-Beziehung zwischen Ihrem VPC-Netzwerk und einem Dienstersteller. Wenn ein einzelner Dienstersteller mehrere Dienste anbietet, benötigen Sie nur eine private Verbindung für alle Dienste des Erstellers.

Wenn Sie eine Verbindung zu mehreren Diensterstellern herstellen, verwenden Sie für jeden Dienstersteller eine eindeutige Zuweisung. Mit dieser Vorgehensweise können Sie Ihre Netzwerkeinstellungen wie Routen und Firewallregeln für jeden Dienstersteller verwalten.

Erstellen Sie in Cloud Shell eine private Verbindung und notieren Sie sich den Vorgangsnamen.

gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=psa-range-looker \
    --network=analytics-vpc

Beispiel:

user@cloudshell$ gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=psa-range-looker \
    --network=analytics-vpc
Operation "operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea" finished successfully.

Prüfen Sie in Cloud Shell, ob der Vorgang erfolgreich war. Ersetzen Sie OPERATION_NAME durch den Namen, der im vorherigen Schritt generiert wurde.

gcloud services vpc-peerings operations describe \
    --name=OPERATION_NAME

Beispiel:

user@cloudshell$ gcloud services vpc-peerings operations describe \
    --name=operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea
Operation "operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea" finished successfully.

5. Looker-Instanz (Google Cloud Core) erstellen

Hinweis

Aktivieren Sie die Looker API für Ihr Projekt in der Google Cloud Console. Wenn Sie die API aktivieren, müssen Sie die Seite der Console möglicherweise aktualisieren, um zu bestätigen, dass die API aktiviert wurde.

Richten Sie einen OAuth-Client ein, um sich zu authentifizieren und auf die Instanz zuzugreifen.

Im folgenden Abschnitt müssen Sie die OAuth-Client-ID und das Secret verwenden, um die Looker-Instanz zu erstellen.

Autorisierte JavaScript-Quellen und Weiterleitungs-URIs sind nicht erforderlich.

103601bca0b6ebe8.png

Erstellen Sie in der Cloud Console eine Instanz anhand der Screenshots.

Rufen Sie LOOKER → INSTANZ ERSTELLEN auf.

Geben Sie die zuvor erstellte OAuth-Client-ID und das Secret ein.

b780ed751824176c.png

3fe880e26a81a756.png

91acffd74c68a067.png

Klicken Sie auf ERSTELLEN.

Während die Instanz erstellt wird, werden Sie in der Console zur Seite Instanzen weitergeleitet. Möglicherweise müssen Sie die Seite aktualisieren, um den Status Ihrer neuen Instanz zu sehen. Sie können die Aktivität zur Instanzerstellung auch aufrufen, indem Sie im Google Cloud Console-Menü auf das Benachrichtigungssymbol klicken. Während die Instanz erstellt wird, wird das Benachrichtigungssymbol im Google Cloud Console-Menü von einem Ladesymbol umkreist.

Nachdem die Looker-Instanz erstellt wurde, wird eine Instanz-URL generiert. Notieren Sie sich die URL.

5ac8a1b8b438dce6.png

6. OAuth 2.0-Client-ID aktualisieren

Im folgenden Abschnitt müssen Sie den autorisierten Weiterleitungs-URI der zuvor erstellten OAuth-Client-ID aktualisieren, indem Sie /oauth2callback an die Instanz-URL anhängen.

Anschließend können Sie sich mit der Instanz-URL in der Looker-Benutzeroberfläche anmelden.

Rufen Sie in der Cloud Console APIs & DIENSTE → ANMELDEDATEN auf.

Wählen Sie Ihre OAuth 2.0-Client-ID aus und aktualisieren Sie Ihre Instanz-URL. Beispiel:

793c5b82ec34fb1f.png

7. Looker-Zugriff validieren

Rufen Sie in der Cloud Console Looker auf und wählen Sie die URL Ihrer Instanz aus, um die Looker-Benutzeroberfläche zu öffnen.

9d132a67c532279e.png

Nach dem Start wird die Landingpage gemäß dem Screenshot unten angezeigt, auf der Ihr Zugriff auf Looker Cloud Core bestätigt wird.

b77055fd674f8a69.png

8. 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 dieser Anleitung stellen Sie ein HA VPN zwischen der analytics-vpc und der on-prem-vpc bereit, um die private Verbindung zu Looker zu veranschaulichen.

HA VPN-Gateway für analytics-vpc erstellen

Beim Erstellen der Gateways werden automatisch zwei externe IPv4-Adressen zugewiesen, eine für jede Gateway-Schnittstelle. Notieren Sie sich diese IP-Adressen, um sie später in den Konfigurationsschritten zu verwenden.

HA VPN-Gateway in Cloud Shell erstellen

gcloud compute vpn-gateways create analytics-vpn-gw \
   --network=analytics-vpc\
   --region=us-central1

HA VPN-Gateway für on-prem-vpc erstellen

Beim Erstellen der Gateways werden automatisch zwei externe IPv4-Adressen zugewiesen, eine für jede Gateway-Schnittstelle. Notieren Sie sich diese IP-Adressen, um sie später in den Konfigurationsschritten zu verwenden.

Erstellen Sie das HA VPN-Gateway in Cloud Shell.

gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-vpc\
   --region=us-central1

Erstellung von HA VPN-Gateways validieren

Rufen Sie in der Console HYBRID CONNECTIVITY → VPN → CLOUD VPN GATEWAYS auf.

a3973b2bbb832bae.png

Cloud Router für die analytics-vpc erstellen

Erstellen Sie in Cloud Shell den Cloud Router in us-central1.

gcloud compute routers create analytics-cr-us-central1 \
   --region=us-central1 \
   --network=analytics-vpc\
   --asn=65001

Cloud Router für on-prem-vpc erstellen

Erstellen Sie in Cloud Shell den Cloud Router in us-central1.

gcloud compute routers create on-prem-cr-us-central1 \
   --region=us-central1 \
   --network=on-prem-vpc \
   --asn=65002

VPN-Tunnel für analytics-vpc 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 analytics-vpc-tunnel0 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router analytics-cr-us-central1 \
    --vpn-gateway analytics-vpn-gw \
    --interface 0

VPN-Tunnel 1 erstellen

Erstellen Sie in Cloud Shell den Tunnel 1:

gcloud compute vpn-tunnels create analytics-vpc-tunnel1 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router analytics-cr-us-central1 \
    --vpn-gateway analytics-vpn-gw \
    --interface 1

VPN-Tunnel für on-prem-vpc 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 analytics-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router on-prem-cr-us-central1 \
    --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 analytics-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router on-prem-cr-us-central1 \
    --vpn-gateway on-prem-vpn-gw \
    --interface 1

Erstellung von VPN-Tunneln prüfen

Rufen Sie in der Console HYBRID CONNECTIVITY → VPN → CLOUD VPN TUNNELS auf.

61c09b3d3102149d.png

9. BGP-Nachbarn einrichten

BGP-Sitzungen erstellen

In diesem Abschnitt konfigurieren Sie Cloud Router-Schnittstellen und BGP-Peers.

BGP-Schnittstelle und ‑Peering für analytics-vpc erstellen

Erstellen Sie in Cloud Shell die BGP-Schnittstelle:

gcloud compute routers add-interface analytics-cr-us-central1 \
    --interface-name if-tunnel0-to-onprem \
    --ip-address 169.254.1.1 \
    --mask-length 30 \
    --vpn-tunnel analytics-vpc-tunnel0 \
    --region us-central1

Erstellen Sie in Cloud Shell den BGP-Peer:

gcloud compute routers add-bgp-peer analytics-cr-us-central1 \
    --peer-name bgp-on-premises-tunnel0 \
    --interface if-tunnel1-to-onprem \
    --peer-ip-address 169.254.1.2 \
    --peer-asn 65002 \
    --region us-central1

Erstellen Sie in Cloud Shell die BGP-Schnittstelle:

gcloud compute routers add-interface analytics-cr-us-central1 \
    --interface-name if-tunnel1-to-onprem \
    --ip-address 169.254.2.1 \
    --mask-length 30 \
    --vpn-tunnel analytics-vpc-tunnel1 \
    --region us-central1

Erstellen Sie in Cloud Shell den BGP-Peer:

gcloud compute routers add-bgp-peer analytics-cr-us-central1 \
    --peer-name bgp-on-premises-tunnel1 \
    --interface if-tunnel2-to-onprem \
    --peer-ip-address 169.254.2.2 \
    --peer-asn 65002 \
    --region us-central1

BGP-Schnittstelle und ‑Peering für on-prem-vpc erstellen

Erstellen Sie in Cloud Shell die BGP-Schnittstelle:

gcloud compute routers add-interface on-prem-cr-us-central1 \
    --interface-name if-tunnel0-to-analytics-vpc \
    --ip-address 169.254.1.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel0 \
    --region us-central1

Erstellen Sie in Cloud Shell den BGP-Peer:

gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
    --peer-name bgp-analytics-vpc-tunnel0 \
    --interface if-tunnel1-to-analytics-vpc \
    --peer-ip-address 169.254.1.1 \
    --peer-asn 65001 \
    --region us-central1

Erstellen Sie in Cloud Shell die BGP-Schnittstelle:

gcloud compute routers add-interface on-prem-cr-us-central1 \
    --interface-name if-tunnel1-to-analytics-vpc \
    --ip-address 169.254.2.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel1 \
    --region us-central1

Erstellen Sie in Cloud Shell den BGP-Peer:

gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
    --peer-name bgp-analytics-vpc-tunnel1\
    --interface if-tunnel2-to-analytics-vpc \
    --peer-ip-address 169.254.2.1 \
    --peer-asn 65001 \
    --region us-central1

Rufen Sie Hybridkonnektivität → VPN auf, um die VPN-Tunneldetails aufzurufen.

ddd4a8f851d44fd6.png

Erkannte Routen von analytics-vpc über HA VPN validieren

Da die HA VPN-Tunnel und BGP-Sitzungen eingerichtet sind, werden Routen von on-prem-vpc von analytics-vpc erlernt. Rufen Sie in der Console VPC-Netzwerk → VPC-Netzwerke → analytics-vpc → ROUTEN → REGION → us-central1 → ANSEHEN auf.

Prüfen Sie, ob analytics-vpc Routen aus dem on-prem-vpc-Datenbanksubnetz database-subnet-us-central1 172.16.10.0/27 erlernt hat.

57c7898390db4bcb.png

Prüfen, ob on-prem-vpc keine Routen über HA VPN erlernt hat

Die analytics-vpc hat kein Subnetz. Daher bewirbt der Cloud Router keine Subnetze gegenüber der on-prem-vpc. Rufen Sie in der Console VPC-Netzwerk → VPC-Netzwerke → on-prem-vpc → ROUTEN → REGION → us-central1 → ANSEHEN auf.

5b007e46a7c7026.png

10. Looker-Subnetz lokal anbieten

Das PSA-Subnetz (Private Service Access) von Looker wird vom Cloud Router „analytics-cr-us-central1“ nicht automatisch beworben, da das Subnetz PSA und nicht dem VPC zugewiesen ist.

Sie müssen ein benutzerdefiniertes Route Advertisement von analytics-cr-central1 für das PSA-Subnetz 192.168.0.0/22 (psa-range-looker) erstellen, das in der lokalen Umgebung beworben und von Arbeitslasten für den Zugriff auf Looker verwendet wird.

Rufen Sie in der Konsole HYBRID CONNECTIVITY → CLOUD ROUTERS → analytics-cr-us-central1 auf und wählen Sie EDIT (BEARBEITEN) aus.

Wählen Sie im Abschnitt „Beworbene Routen“ die Option Benutzerdefinierte Routen erstellen aus, aktualisieren Sie die Felder anhand des Beispiels unten, wählen Sie FERTIG aus und klicken Sie dann auf SPEICHERN.

87f95ee3d1cd8521.png

11. Prüfen, ob die on-prem-vpc das Looker-Subnetz erlernt hat

Die on-prem-vpc kann jetzt auf das Looker-PSA-Subnetz zugreifen, da es von analytics-cr-us-central1 als benutzerdefiniertes Route Advertisement beworben wurde.

Rufen Sie in der Console VPC‑NETZWERK → VPC‑NETZWERKE → on-prem-vpc → ROUTEN → REGION → us-central1 → ANSEHEN auf.

Sehen Sie sich die Looker-Routen an, die von der analytics-vpc beworben werden:

a987a76fd57ddedd.png

12. Aktuelles VPC-Peering validieren

Die Verbindung zwischen Looker Cloud Core und der Analytics-VPC erfolgt über VPC-Peering, das den Austausch von benutzerdefinierten Routen ermöglicht, die über BGP gelernt wurden. Im Tutorial muss die analytics-vpc die von der on-prem-vpc erkannten Routen in Looker veröffentlichen. Damit diese Funktion aktiviert werden kann, muss das VPC-Peering aktualisiert werden, um benutzerdefinierte Routen zu exportieren.

Aktuell importierte und exportierte Routen validieren

Rufen Sie VPC-NETZWERK → VPC-NETZWERK-PEERING → servicenetworking-googleapis-com auf.

f6d9395712934cd8.png

Der Screenshot unten zeigt, dass „analytics-vpc“ den Bereich „psa-range-looker“ aus dem von Google verwalteten Peering-VPC-Netzwerk „servicesnetworking“ importiert.

86a0e8c3534c6986.png

Wenn Sie „EXPORTED ROUTES“ auswählen, werden keine Routen in das Peering-VPC-Netzwerk exportiert, da 1) keine Subnetze in „analytics-vpc“ konfiguriert sind und 2) „Benutzerdefinierte Routen exportieren“ nicht ausgewählt ist.

a52de427fa73fb22.png

13. VPC-Peering aktualisieren

Rufen Sie VPC-NETZWERK → VPC-NETZWERK-PEERING → servicenetworking-googleapis-com → BEARBEITEN auf.

Wählen Sie BENUTZERDEFINIERTE ROUTEN EXPORTIEREN → SPEICHERN aus.

a2309e4c3a7cee80.png

14. Aktualisiertes VPC-Peering validieren

Exportierte Routen validieren

Rufen Sie VPC-NETZWERK → VPC-NETZWERK-PEERING → servicenetworking-googleapis-com auf.

Wenn Sie „EXPORTED ROUTES“ (EXPORTIERTE ROUTEN) auswählen, sehen Sie, dass die Routen vom lokalen VPC-Netzwerk (Datenbanksubnetz 172.16.10.0/27) vom VPC-Netzwerk „analytics-vpc“ in das Peering-VPC-Netzwerk exportiert werden, in dem Looker gehostet wird.

47e953268d78a469.png

15. 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 "us-central1-a" "postgres-database" --project "$projectid"

Ermitteln Sie im Betriebssystem die IP-Adresse (ens4) der postgres-Datenbankinstanz und notieren Sie sie.

ip a

Beispiel:

user@postgres-database:~$ ip a
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 
       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:ac:10:0a:02 brd ff:ff:ff:ff:ff:ff
    altname enp0s4
    inet 172.16.10.2/32 metric 100 scope global dynamic ens4
       valid_lft 84592sec preferred_lft 84592sec
    inet6 fe80::4001:acff:fe10:a02/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 das gleiche Passwort zweimal 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 und das Looker Private Google Access-Subnetz (192.168.0.0/22) in die Datei „pg_hba.conf“ unter den lokalen IPv4-Verbindungen ein, wie im Screenshot unten dargestellt:

178364a8ee9b6233.png

sudo nano /etc/postgresql/15/main/pg_hba.conf

Entfernen Sie im folgenden Abschnitt die Kommentarzeichen aus postgresql.conf, um gemäß dem Screenshot unten auf alle „*“-IP-Adressen zu warten:

sudo nano /etc/postgresql/15/main/postgresql.conf

Vorher:

aad52092c0a9408.png

Nachher:

7e80b916d29e097c.png

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 Sat 2023-07-01 23:40:59 UTC; 7s ago
    Process: 4073 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 4073 (code=exited, status=0/SUCCESS)
        CPU: 2ms

Jul 01 23:40:59 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Jul 01 23:40:59 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.

16. 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 Looker-Nutzer mit dem Looker-Passwort.

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

Beispiel:

user@postgres-database$ sudo -u postgres psql postgres
psql (15.3 (Ubuntu 15.3-0ubuntu0.23.04.1))
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 SCHEMA
postgres_looker=# create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
CREATE TABLE
postgres_looker=# exit

Beenden Sie das Betriebssystem, um zur Cloud Shell zurückzukehren.

\q
exit

17. Firewall in der on-prem-vpc erstellen

Im folgenden Abschnitt erstellen Sie eine Ingress-Firewall mit Logging, die die Kommunikation des Looker-Subnetzes mit der postgres-Datenbankinstanz zulässt.

Erstellen Sie in Cloud Shell die Firewall für on-prem-vpc.

gcloud compute --project=$projectid firewall-rules create looker-access-to-postgres --direction=INGRESS --priority=1000 --network=on-prem-vpc --action=ALLOW --rules=all --source-ranges=192.168.0.0/22 --enable-logging

18. Private DNS in der analytics-vpc erstellen

Looker wird zwar in einer von Google verwalteten VPC bereitgestellt, der Zugriff auf das private DNS der Analytics-VPC wird jedoch durch Peering mit Dienstnetzwerken unterstützt.

Im folgenden Abschnitt erstellen Sie eine private DNS-Zone in der analytics-vpc, die aus einem A-Eintrag des vollqualifizierten Domainnamens (postgres.analytics.com)) und der IP-Adresse der postgres-Datenbankinstanz besteht.

Erstellen Sie in Cloud Shell die private Zone „analytics.com“.

gcloud dns --project=$projectid managed-zones create gcp-private-zone --description="" --dns-name="analytics.com." --visibility="private" --networks="https://www.googleapis.com/compute/v1/projects/$projectid/global/networks/analytics-vpc"

Ermitteln Sie in Cloud Shell die IP-Adresse der postgres-database-Instanz.

gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:

Beispiel:

user@cloudshell$ gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
  networkIP: 172.16.10.2

Erstellen Sie in Cloud Shell den A-Eintrag und fügen Sie die zuvor ermittelte IP-Adresse hinzu.

gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="your-postgres-database-ip"

Beispiel:

user@cloudshell$ gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="172.16.10.2"
NAME: postgres.analytics.com.
TYPE: A
TTL: 300
DATA: 172.16.10.2

Stellen Sie in Cloud Shell eine Peering-Verbindung zwischen dem DNS-Suffix analytics.com und dem Dienstnetzwerk her, damit Looker auf die private Zone „analytics-vpc“ zugreifen kann.

gcloud services peered-dns-domains create looker-com --network=analytics-vpc --service=servicenetworking.googleapis.com --dns-suffix=analytics.com.

19. Looker in die Postgres-Datenbank einbinden

Im folgenden Abschnitt erstellen Sie mit der Cloud Console eine Datenbankverbindung zur lokalen Postgres-Datenbankinstanz.

Rufen Sie in der Cloud Console Looker auf und wählen Sie die URL Ihrer Instanz aus, um die Looker-Benutzeroberfläche zu öffnen.

9d132a67c532279e.png

Nach dem Start wird die Landingpage wie im Screenshot unten angezeigt.

b77055fd674f8a69.png

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.

c8cca15252c2020d.png

Die Verbindung wurde hergestellt

3e51b7e2cc62fb45.png

20. 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-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"

Erstellen Sie im Betriebssystem einen TCPDUMP-Filter mit dem PSA-Range-Looker-Subnetz 192.168.0.0/22.

sudo tcpdump -i any net 192.168.0.0/22 -nn

Rufen Sie die Datenverbindung auf: VERWALTUNG → DATENBANK → VERBINDUNGEN → Auswählen → Testen

Wenn „Test“ ausgewählt ist, stellt Looker eine Verbindung zur PostgreSQL-Datenbank her, wie unten dargestellt:

ef25b837b6a41fe.png

Kehren Sie zum Betriebssystemterminal zurück und prüfen Sie, ob TCPDUMP erkannt hat, dass der psc-range-Looker eine Verbindung zur lokalen postgres-Datenbankinstanz herstellt.

Fügen Sie einen Hinweis hinzu, dass alle IP-Adressen aus dem PSA-Bereich in Looker angezeigt werden.

user@postgres-database$ sudo tcpdump -i any net 192.168.0.0/22 -nn
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
00:16:55.121631 ens4  In  IP 192.168.1.24.46892 > 172.16.10.2.5432: Flags [S], seq 2221858189, win 42600, options [mss 1366,sackOK,TS val 4045928414 ecr 0,nop,wscale 7], length 0
00:16:55.121683 ens4  Out IP 172.16.10.2.5432 > 192.168.1.24.46892: Flags [S.], seq 1464964586, ack 2221858190, win 64768, options [mss 1420,sackOK,TS val 368503074 ecr 4045928414,nop,wscale 7], length 0

21. Sicherheitsempfehlungen

Es gibt einige Sicherheitsempfehlungen und Best Practices für die Sicherung von Looker und der Postgres-Datenbank. Dazu gehören:

  • Die Datenbank-Kontoberechtigungen müssen so streng wie möglich eingerichtet werden, müssen dabei aber noch alle benötigten Funktionen ausführen können.
  • Daten, die zwischen dem Client und der Looker-Benutzeroberfläche sowie zwischen Looker und der Datenbank übertragen werden, werden mit TLS 1.2+ verschlüsselt.
  • Ruhende Daten werden standardmäßig verschlüsselt. Kunden können auch CMEK für Looker-Instanzen ( https://cloud.google.com/looker/docs/looker-core-cmek) und für Postgres ( https://cloud.google.com/sql/docs/postgres/configure-cmek) nutzen.
  • Looker-Zugriffssteuerung: Looker-Administratoren können steuern, was ein Prinzipal oder eine Gruppe von Nutzern in Looker sehen und tun kann, indem sie Inhalts-, Daten- und Funktionszugriff gewähren. Mit diesen Optionen können Looker-Administratoren bestimmte Rollen mit Modell- und Berechtigungssätzen definieren und eine detaillierte Zugriffssteuerung für Daten erstellen.
  • Looker unterstützt sowohl Audit-Logs als auch Datenzugriffslogs, in denen erfasst wird, wer was wann und wo getan hat. Audit-Logs sind standardmäßig aktiviert, während Datenzugriffslogs explizit aktiviert werden müssen.
  • Derzeit werden VPC-SC-Instanzen vom Typ „Enterprise“ und „Embed“ unterstützt, die nur mit privaten IP-Adressen konfiguriert sind.

22. Bereinigen

Löschen Sie die Looker Cloud Core-Instanz. Rufen Sie dazu Folgendes auf:

LOOKER → looker-tutorial → DELETE

e5a2e3af9e7ffd40.png

Löschen Sie die Komponenten der Anleitung in Cloud Shell.

gcloud compute vpn-tunnels delete analytics-vpc-tunnel0 analytics-vpc-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=us-central1 --quiet

gcloud compute vpn-gateways delete analytics-vpn-gw on-prem-vpn-gw --region=us-central1 --quiet

gcloud compute routers delete analytics-cr-us-central1 on-prem-cr-us-central1 on-prem-cr-us-central1-nat --region=us-central1 --quiet

gcloud compute instances delete postgres-database --zone=us-central1-a --quiet

gcloud compute networks subnets delete database-subnet-us-central1 --region=us-central1 --quiet

gcloud compute firewall-rules delete looker-access-to-postgres on-prem-ssh --quiet

gcloud dns record-sets delete postgres.analytics.com. --type=A --zone=gcp-private-zone
        
gcloud dns managed-zones delete gcp-private-zone

gcloud compute networks delete on-prem-vpc --quiet

gcloud compute addresses delete psa-range-looker --global --quiet

gcloud compute networks delete analytics-vpc --quiet

23. Glückwunsch

Sie haben die Looker-Verbindung über Hybrid Networking erfolgreich konfiguriert und validiert. Damit ist die Datenkommunikation zwischen lokalen und Multi-Cloud-Umgebungen möglich.

Außerdem konnten Sie die Verbindung von Looker Cloud Core zur Postgres-Datenbank mit dem Tool „Test“ von Looker Connect und TCPDUMP in der Postgres-Datenbankinstanz testen.

Cosmopup findet Tutorials toll!!

e6d3675ca7c6911f.jpeg

Weitere Informationen und Videos

Referenzdokumente