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 Instanzverwaltungsaufgaben können auch über die Console ausgeführt werden.

Es gibt drei verfügbare Netzwerkkonfigurationen für Instanzen von Looker (Google Cloud Core):

  • Ö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: Netzwerkverbindung verwendet sowohl eine öffentliche IP-Adresse als auch eine private IP-Adresse, wobei eingehender Traffic über öffentliche IP-Adressen und ausgehender Traffic über private IP-Adressen geleitet wird.

In dieser Anleitung stellen Sie ein umfassendes privates Netzwerk bereit, das die Looker-Verbindung zu einem lokalen VPC-Netzwerk über HA VPN unterstützt, das repliziert werden kann, um Ihre Anforderungen an Multi-Cloud- und lokale Verbindungen zu erfüllen.

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

Inhalt

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. Für Ihre Bereitstellung würde der On-Prem-vpc nicht vorhanden sein, sondern ein hybrides Netzwerk mit Ihrem lokalen Rechenzentrum oder Ihrem Cloud-Anbieter.

Nachfolgend sind die wichtigsten Schritte der Anleitung aufgeführt.

  1. Eigenständige VPC in us-central1 erstellen
  2. IP-Subnetz dem privaten Dienstzugriff zuweisen
  3. Looker-Instanz in der eigenständigen VPC bereitstellen
  4. Lokales VPC-Netzwerk und Hybridnetzwerk erstellen
  5. Looker-IP-Bereich über BGP bewerben und validieren
  6. Looker- und Postgresql-Datenkommunikation integrieren und validieren

Figure1

8436cc4802b670db.png

Lerninhalte

  • VPC und zugehöriges Hybridnetzwerk erstellen
  • So stellen Sie Looker in einem eigenständigen VPC-PC bereit
  • So erstellen Sie einen lokalen VPC-Server und ein zugehöriges Hybridnetzwerk
  • On-Prem-VPC mit analytics-vps über HA VPN verbinden
  • Looker-Subnetze über Hybridnetzwerke bewerben
  • Hybrid-Netzwerkinfrastruktur überwachen
  • Postgresql-Datenbank in Looker Cloud Core einbinden

Voraussetzungen

  • Google Cloud-Projekt

IAM-Berechtigungen

2. Hinweis

Projekt zur Unterstützung der Anleitung aktualisieren

In dieser Anleitung wird mithilfe von $variables die Implementierung der gcloud-Konfiguration in Cloud Shell unterstützt.

Führen Sie in Cloud Shell die folgenden Schritte aus:

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

3. VPC-Einrichtung

analytics-vpc erstellen

Führen Sie in Cloud Shell die folgenden Schritte aus:

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

On-prem-vpc erstellen

Führen Sie in Cloud Shell die folgenden Schritte aus:

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

Postgresql-Datenbanksubnetz erstellen

Führen Sie in Cloud Shell die folgenden 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

In der Anleitung wird Cloud NAT 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

Datenbanktestinstanz erstellen

Erstellen Sie eine postgres-Datenbankinstanz, die zum Testen und Validieren der Konnektivität 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, müssen Sie eine Firewallregel erstellen, die:

  • Gilt für alle VM-Instanzen, die mit 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.

Von 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 Dritten. Google oder der Drittanbieter, also Rechtssubjekte, die Dienste anbieten, werden auch als Dienstersteller bezeichnet. Looker Cloud Core ist ein Dienstersteller.

Die private Verbindung ermöglicht VM-Instanzen in Ihrem VPC-Netzwerk und die Dienste, auf die Sie ausschließlich über interne IP-Adressen zugreifen.

Wenn Sie den Zugriff auf private Dienste nutzen möchten, müssen Sie einen IP-Adressbereich (CIDR-Block) in Ihrem VPC-Netzwerk zuweisen und dann 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-Adresskonflikt 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 zulässig.

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

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

IP-Zuweisung erstellen

Verwenden Sie die Flags „Adressen“ und „Präfixlänge“, um einen Adressbereich und eine Präfixlänge (Subnetzmaske) anzugeben. Wenn Sie beispielsweise den CIDR-Block 192.168.0.0/22 zuweisen 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

Eine private Verbindung erstellen

Nachdem Sie einen zugewiesenen Bereich erstellt haben, können Sie eine private Verbindung zu einem Dienstersteller Looker Cloud Core erstellen. Die private Verbindung stellt eine VPC-Netzwerk-Peering-Verbindung zwischen Ihrem VPC-Netzwerk und dem Netzwerk des Diensterstellers her, sobald die Looker-Instanz eingerichtet ist.

Private Verbindungen sind eine 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 dann OPERATION_NAME durch den im vorherigen Schritt generierten Namen.

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 (Google Cloud Core)-Instanz erstellen

Hinweis

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

Richten Sie einen OAuth-Client für die Authentifizierung und den Zugriff auf die Instanz ein.

Im folgenden Abschnitt müssen Sie die OAuth-Client-ID und den geheimen Clientschlüssel verwenden, um die Looker-Instanz zu erstellen.

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

103601bca0b6ebe8.png

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

Gehen Sie zu LOOKER → INSTANZ ERSTELLEN.

Fülle die zuvor erstellte OAuth-Client-ID und das erstellte OAuth-Client-Secret aus.

b780ed751824176c.png

3fe880e26a81a756.png

91acffd74c68a067.png

Wähle ERSTELLEN aus.

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 sich die Aktivitäten zur Instanzerstellung auch ansehen, indem Sie im Menü der Google Cloud Console auf das Benachrichtigungssymbol klicken. Während die Instanz erstellt wird, ist das Benachrichtigungssymbol im Menü der Google Cloud Console von einem Ladesymbol umgeben.

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 die zuvor erstellte OAuth-Client-ID Autorisierter Weiterleitungs-URI aktualisieren, indem Sie /oauth2callback an die Instanz-URL anhängen.

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

Rufen Sie in der Cloud Console APIs und DIENSTE → ANMELDEDATEN

Wählen Sie Ihre OAuth 2.0-Client-ID aus und aktualisieren Sie die Instanz-URL (siehe Beispiel unten):

793c5b82ec34fb1f.png

7. Looker-Zugriff validieren

Rufen Sie in der Cloud Console Looker auf und wählen Sie die Instanz-URL aus, mit der die Looker-Benutzeroberfläche geöffnet werden soll.

9d132a67c532279e.png

Nach der Einführung wird gemäß dem folgenden Screenshot die Landingpage angezeigt, mit 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 Ihrem Peer-Netzwerk mithilfe des Border Gateway Protocol (BGP) dynamisch austauschen können.

Cloud Router kann eine BGP-Sitzung über einen Cloud VPN-Tunnel einrichten, um Ihre Netzwerke zu verbinden. Er erkennt automatisch neue Subnetz-IP-Adressbereiche und kündigt sie Ihrem Peer-Netzwerk an.

In dieser Anleitung stellen Sie ein HA VPN zwischen dem analytics-vpc und dem on-prem-vpc bereit, um die private Verbindung zu Looker zu veranschaulichen.

HA VPN-GW für analytics-vpc erstellen

Beim Erstellen eines 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 in Cloud Shell das HA VPN-GW

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

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

Beim Erstellen eines 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 in Cloud Shell das HA VPN-GW.

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

HA VPN-GW-Erstellung validieren

Gehen Sie in der Console zu HYBRID-KONNEKTIVITÄT → VPN → CLOUD VPN GATEWAYS.

a3973b2bbb832bae.png

Cloud Router für 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-Tunnel erstellen0

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 erstellen1

Erstellen Sie in Cloud Shell "tunnel1":

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-Tunnel erstellen0

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 erstellen1

Erstellen Sie in Cloud Shell "tunnel1":

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

VPN-Tunnelerstellung validieren

Gehen Sie in der Konsole zu HYBRID-KONNEKTIVITÄT → VPN → CLOUD VPN-TUNNELS.

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

Gehen Sie zu Hybridkonnektivität → VPN, um die Details zum VPN-Tunnel aufzurufen.

ddd4a8f851d44fd6.png

Erkannte „analytics-vpc“-Routen über HA VPN validieren

Da die HA VPN-Tunnel und BGP-Sitzungen eingerichtet sind, werden Routen von "on-prem-vpc" vom "analytics-vpc" erkannt. Gehen Sie in der Console zu VPC-Netzwerk → VPC-Netzwerke → analytics-vpc → ROUTES → REGION → us-central1 → VIEW.

Sehen Sie sich an, ob „analytics-vpc“ Routen aus „on-prem-vpc database-subnet-us-central1 172.16.10.0/27“ erkannt hat.

57c7898390db4bcb.png

Prüfen, ob „on-prem-vpc“ Routen über HA VPN nicht erkannt hat

Der analytics-vpc hat kein Subnetz. Daher bewirbt der Cloud Router dem "on-prem-vpc" keine Subnetze. Gehen Sie in der Console zu VPC-Netzwerk → VPC-Netzwerke → On-prem-vpc → ROUTES → REGION → us-central1 → VIEW.

5b007e46a7c7026.png

10. Looker-Subnetz lokal anbieten

Das Subnetz des privaten Dienstzugriffs (PSA) von Looker wird nicht automatisch vom Cloud Router analytics-cr-us-central1 beworben, da das Subnetz nicht der VPC, sondern einem PSA zugewiesen ist.

Sie müssen ein benutzerdefiniertes Route Advertising aus der Analyse-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.

Gehen Sie in der Console zu HYBRID-KONNEKTIVITÄT → CLOUD-ROUTER → analytics-cr-us-central1 und wählen Sie BEARBEITEN aus.

Wählen Sie im Abschnitt „Beworbene Routen“ die Option Benutzerdefinierte Routen erstellen aus und 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 der On-Prem-vpc das Looker-Subnetz erkannt hat

Der On-Prem-vpc kann jetzt auf das PSA-Subnetz von Looker zugreifen, da es von analytics-cr-us-central1 als benutzerdefiniertes Route Advertising beworben wurde.

Gehen Sie in der Console zu VPC NETWORK → VPC NETWORKS → on-prem-vpc → ROUTES → REGION → us-central1 → VIEW.

Beobachten Sie die vom analytics-vpc beworbenen Looker-Routen:

a987a76fd57ddedd.png

12. Aktuelles VPC-Peering validieren

Die Verbindung zwischen Looker Cloud Core und dem analytics-vpc erfolgt über VPC-Peering, das den Austausch von benutzerdefinierten Routen ermöglicht, die über BGP ermittelt wurden. In diesem Tutorial muss der „analytics-vpc“ die vom lokalen VPC erlernten Routen in Looker veröffentlichen. Zum Aktivieren dieser Funktion ist für das VPC-Peering eine Aktualisierung zum Exportieren benutzerdefinierter Routen erforderlich.

Validieren Sie aktuell importierte und exportierte Routen.

Gehen Sie zu VPC-NETZWERK → VPC-NETZWERK-PEERING → servicenetworking-googleapis-com.

f6d9395712934cd8.png

Im Screenshot unten sehen Sie Details zum „analytics-vpc“, das den PSA-Bereich Looker aus dem von Google verwalteten Peering-VPC-Netzwerk, „servicesnetworking“, importiert.

86a0e8c3534c6986.png

Wählen Sie EXPORTIERTE ROUTES-Rückläufe aus, die keine Routen in das Peering-VPC-Netzwerk exportiert haben, da 1) Subnetze nicht in analytics-vpc konfiguriert sind. 2) Benutzerdefinierte Routen exportieren ist nicht ausgewählt

a52de427fa73fb22.png

13. VPC-Peering aktualisieren

Gehen Sie zu VPC-NETZWERK → VPC-NETZWERK-PEERING → servicenetworking-googleapis-com → BEARBEITEN.

Wählen Sie BENUTZERDEFINIERTE ROUTES EXPORTIEREN → SPEICHERN aus.

a2309e4c3a7cee80.png

14. Aktualisiertes VPC-Peering validieren

Exportierte Routen validieren.

Gehen Sie zu VPC-NETZWERK → VPC-NETZWERK-PEERING → servicenetworking-googleapis-com.

Durch die Auswahl von EXPORTIERTEN ROUTES wird gezeigt, dass die lokalen VPC-Routen (Datenbanksubnetz 172.16.10.0/27) in das Peering-VPC-Netzwerk exportiert werden, das Looker vom analytics-vpc hostet.

47e953268d78a469.png

15. Erstellung der Looker-Postgres-Datenbank

Im folgenden Abschnitt führen Sie mit Cloud Shell eine SSH-Verbindung zur VM „postgres-database“ aus.

Führen Sie in Cloud Shell eine SSH-Verbindung zur Instanz "postgres-database" aus.**

 gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"

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

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 die Passwort-Eingabeaufforderung ein.

\password postgres

Stellen Sie im Betriebssystem das Passwort auf „postgres“ ein, d. h. 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 im Betriebssystem Postgres.

\q

Beispiel:

postgres=# \q
user@postgres-database:~$ 

Im folgenden Abschnitt fügen Sie die IP-Adresse der postgres-Datenbank-Instanz und das private Google-Zugriffs-Subnetz von Looker (192.168.0.0/22) in die Datei pg_hba.conf unter den lokalen IPv4-Verbindungen wie im Screenshot unten ein:

178364a8ee9b6233.png

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

Entfernen Sie im folgenden Abschnitt die Kommentarzeichen von postgresql.conf, um alle '*' zu überwachen IP-Adressen gemäß dem folgenden Screenshot:

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

Überprüfen Sie im Betriebssystem den Postgresql-Status als aktiv.

sudo service postgresql status

Beispiel:

Überprüfen Sie im Betriebssystem den Postgresql-Status als aktiv.

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 dem Looker zur lokalen Verbindung 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

Im Betriebssystem mit Passwort-Looker die Benutzer-Looker erstellen

create user postgres_looker with password 'postgreslooker';

Stellen Sie im Betriebssystem eine Verbindung zur Datenbank her.

\c postgres_looker;

Erstellen Sie im Betriebssystem das Looker-Schema für das Looker-Schema und verlassen Sie die Cloud Shell-Eingabeaufforderung.

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 und kehren Sie zu Cloud Shell zurück.

\q
exit

17. Firewall im lokalen VPC-Netzwerk erstellen

Erstellen Sie im folgenden Abschnitt eine Ingress-Firewall mit Logging, die dem Looker-Subnetz die Kommunikation mit der postgres-Datenbankinstanz ermöglicht.

Erstellen Sie in Cloud Shell die Firewall "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. Privates DNS in analytics-vpc erstellen

Obwohl Looker in einer von Google verwalteten VPC bereitgestellt wird, wird der Zugriff auf das private DNS analytics-vpc über das Peering mit Diensten unterstützt.

Im folgenden Abschnitt erstellen Sie eine private DNS-Zone im analytics-vpc, die aus einem A-Eintrag der postgres-Datenbankinstanz mit vollem qualifizierten Domainnamen (postgres.analytics.com) und IP-Adresse) 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 Instanz "postgres-database".

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 identifizierte 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

Rufen Sie in Cloud Shell das Peer-DNS-Suffix analytics.com auf. und ermöglicht Looker den Zugriff auf die private Zone analytics-vpc.

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 „postgres“ einbinden

Im folgenden Abschnitt verwenden Sie die Cloud Console, um eine Datenbankverbindung zur lokalen postgres-database-Instanz zu erstellen.

Rufen Sie in der Cloud Console Looker auf und wählen Sie die Instanz-URL aus, mit der die Looker-Benutzeroberfläche geöffnet werden soll.

9d132a67c532279e.png

Nach der Aktivierung wird die Landingpage (siehe Screenshot unten) angezeigt.

b77055fd674f8a69.png

Gehen Sie zu VERWALTUNG → DATENBANK → VERBINDUNGEN → Wählen Sie VERBINDUNG HINZUFÜGEN aus.

Geben Sie die Verbindungsdetails wie im Screenshot unten ein und wählen Sie VERBINDEN aus.

c8cca15252c2020d.png

Die Verbindung ist jetzt hergestellt

237b7e2cc62fb45.png

20. Looker-Konnektivität validieren

Im folgenden Abschnitt erfahren Sie, wie Sie die Konnektivität von Looker zur postgres-Datenbank im lokalen VPC-Netzwerk mithilfe des Looker-„Test“-Tools validieren. Aktion und TCPDUMP.

Melden Sie sich über Cloud Shell bei der postgres-Datenbank an, wenn das Zeitlimit der Sitzung überschritten wurde.

Führen Sie in Cloud Shell die folgenden 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

Gehen Sie zur Datenverbindung VERWALTUNG → DATENBANK → VERBINDUNGEN → Auswählen → Testen.

Nachdem „Test“ ausgewählt wurde, stellt Looker wie unten angegeben eine Verbindung zur postgres-Datenbank her:

ef25b837b6a41fe.png

Kehren Sie zum Terminal des Betriebssystems zurück und prüfen Sie, ob TCPDUMP erkannt hat, dass psc-range-looker eine Verbindung zur lokalen Postgres-Datenbankinstanz herstellt.

Fügen Sie einen Hinweis hinzu, dass jede IP-Adresse aus dem PSA-Bereich von Looker angezeigt wird

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

Im Zusammenhang mit dem Schutz von Looker und der Postgres-Datenbank gibt es wenige Sicherheitsempfehlungen und Best Practices. Dazu gehören:

  • Richten Sie Datenbankkontoberechtigungen mit den geringsten Berechtigungen für Looker ein, damit Looker noch alle erforderlichen Funktionen ausführen kann.
  • Daten bei der Übertragung zwischen Client und Looker-Benutzeroberfläche und Looker zur Datenbank werden mit TLS 1.2+ verschlüsselt.
  • Inaktive Daten sind standardmäßig verschlüsselt. Kunden können einen CMEK auch 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) verwenden.
  • Looker-Zugriffssteuerung: Looker-Administratoren können steuern, was ein Prinzip oder eine Gruppe von Nutzern in Looker sehen und tun kann, indem sie Zugriff auf Inhalte, Daten und Funktionen gewähren. Mit diesen Optionen kann der Looker-Administrator bestimmte Rollen definieren, einschließlich Modell und Berechtigungssatz, und eine detaillierte Zugriffssteuerung für Daten erstellen.
  • Looker unterstützt sowohl Audit-Logs als auch Datenzugriffs-Logs, mit 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 unterstützt VPC-SC Enterprise- und Embed-Instanzen, die nur mit privaten IP-Adressen konfiguriert sind

22. Bereinigen

Löschen Sie die Looker Cloud Core-Instanz. Gehen Sie dazu zu:

LOOKER → Looker-Tutorial → DELETE

e5a2e3af9e7ffd40.png

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

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

Herzlichen Glückwunsch! Sie haben die Looker-Konnektivität über ein Hybridnetzwerk erfolgreich konfiguriert und validiert, um eine Datenkommunikation in lokalen und Multi-Cloud-Umgebungen zu ermöglichen.

Außerdem konnten Sie die Konnektivität von Looker Cloud Core zur Postgres-Datenbank mit „Test“ von Looker Connect testen. und TCPDUMP in der Instanz "postgres-database".

Cosmopup findet die Anleitungen super!

e6d3675ca7c6911f.jpeg

Weitere Informationen und Videos

Referenzdokumente