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 Aufgaben zur Instanzverwaltung können auch über die Console 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: Für die Netzwerkverbindung werden sowohl eine öffentliche als auch eine private IP-Adresse verwendet. 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 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 einem eigenständigen VPC mit Hybridkonnektivität zu Multi-Cloud- und On-Premises-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.

Im Folgenden sind die wichtigsten Schritte der Anleitung aufgeführt.

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

Abbildung 1

8436cc4802b670db.png

Lerninhalte

  • VPC und zugehöriges Hybridnetzwerk erstellen
  • So stellen Sie Looker in einem eigenständigen VPC-PC bereit
  • On-Premises-VPC und zugehöriges Hybridnetzwerk erstellen
  • 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 werden $-Variablen verwendet, um die Implementierung der gcloud-Konfiguration in Cloud Shell zu unterstützen.

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 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-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 in Cloud Shell den Cloud Router.

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, 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, also Rechtssubjekte, die Dienste anbieten, werden auch als Dienstersteller bezeichnet. Looker Cloud Core ist ein Dienstanbieter.

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-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 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 die Console-Seite möglicherweise aktualisieren, um zu prüfen, ob 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

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 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 die Console-Seite möglicherweise aktualisieren, um zu prüfen, ob 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 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 → INSTANCE 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 Ladebalken umgeben.

Nach dem Erstellen der Looker-Instanz 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 in der Looker-Benutzeroberfläche anmelden.

Gehen Sie in der Cloud Console zu APIS & 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 prüfen

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 die Landingpage im 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 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 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-GW 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 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 der Region „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 der Region „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 Console zu HYBRIDKONNEKTIVITÄ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

Rufen Sie HYBRIDKONNEKTIVITÄT → VPN auf, um die VPN-Tunneldetails aufzurufen.

ddd4a8f851d44fd6.png

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

Da die HA VPN-Tunnel und BGP-Sitzungen eingerichtet sind, werden Routes von on-prem-vpc aus dem Analytics-VPC erlernt. 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 für die On-Premise-Umgebung 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 prüfen

Die Verbindung zwischen Looker Cloud Core und dem Analytics-VPC erfolgt über VPC-Peering, das den Austausch benutzerdefinierter Routen ermöglicht, die über BGP gelernt 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.

Prüfen Sie die aktuell importierten und exportierten Routen.

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

f6d9395712934cd8.png

Im folgenden Screenshot ist der Import des psa-range-lookers aus dem von Google verwalteten Peering-VPC-Netzwerk „servicesnetworking“ in das „analytics-vpc“ zu sehen.

86a0e8c3534c6986.png

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

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 prüfen

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. Looker-Postgres-Datenbank erstellen

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 Sie die IP-Adresse (ens4) der Postgres-Datenbankinstanz im Betriebssystem und notieren Sie sich diese.

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

Legen Sie im Betriebssystem das Passwort für postgres fest (zweimal dasselbe Passwort eingeben).

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 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 wie im Screenshot unten nach allen '*'-IP-Adressen zu überwachen:

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 Status von postgresql „aktiv“ ist.

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 eine Verbindung zur Datenbank her.

\c postgres_looker;

Erstellen Sie im Betriebssystem das Schema „looker-schema“ und kehren Sie zum Cloud Shell-Prompt zurück.

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 zu Cloud Shell zurückzukehren.

\q
exit

17. Firewall in on-prem-vpc erstellen

Erstellen Sie im folgenden Abschnitt eine Ingress-Firewall mit Protokollierung, die die Kommunikation des Looker-Subnetzes mit der Postgres-Datenbankinstanz zulässt.

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 der 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 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 mit dem DNS-Suffix analytics.com her. So erhält Looker 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 Einführung wird die Landingpage wie im Screenshot unten angezeigt.

b77055fd674f8a69.png

Gehen Sie zu ADMIN → DATABASE → CONNECTIONS (ADMIN → DATABASE → CONNECTIONS) und wählen Sie ADD CONNECTION (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

3e51b7e2cc62fb45.png

20. Looker-Konnektivität validieren

Im folgenden Abschnitt erfahren Sie, wie Sie die Looker-Verbindung zur postgres-Datenbank im lokalen VPC-PC mithilfe der Looker-Aktion „test“ und TCPDUMP prüfen.

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 über das 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 Betriebssystem-Terminal zurück und prüfen Sie, ob TCPDUMP erkannt hat, dass psc-range-looker eine Verbindung zur lokalen PostgreSQL-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.
  • Ruhedaten werden standardmäßig verschlüsselt. Kunden können 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 festlegen, was ein Prinzipal 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, 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 von VPC-SC nur Enterprise- und eingebettete Instanzen unterstützt, 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 dem „Test“-Tool von Looker Connect und TCPDUMP in der Instanz „postgres-database“ erfolgreich testen.

Cosmopup findet Tutorials super!

e6d3675ca7c6911f.jpeg

Weitere Lesematerialien und Videos

Referenzdokumente