Looker PSC Southbound HTTPS Internet NEG SMTP

1. Einführung

In diesem Codelab erstellen Sie eine Downstream-Verbindung zum SMTP-Dienst von Looker mithilfe eines internen TCP-Proxy-Load-Balancers und einer Internet-Netzwerk-Endpunktgruppe (NEG) mit dem FQDN notifications-pa.googleapis.com, der von Looker PSC als Dienstnutzer aufgerufen wird.

Private Service Connect ist eine Funktion des Google Cloud-Netzwerks, mit der Nutzer privat aus ihrem VPC-Netzwerk auf verwaltete Dienste zugreifen können. Ebenso können Ersteller verwalteter Dienste diese Dienste in ihren eigenen separaten VPC-Netzwerken hosten und ihren Nutzern eine private Verbindung bieten. Wenn Sie beispielsweise Private Service Connect für den Zugriff auf Looker verwenden, sind Sie der Dienstnutzer und Google der Dienstersteller, wie in Abbildung 1 dargestellt.

Abbildung 1:

145ea4672c3a3b14.png

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

Abbildung 2.

259493afd914f68b.png

Lerninhalte

  • Netzwerkanforderungen
  • Private Service Connect-Producer-Dienst erstellen
  • Private Service Connect-Endpunkt in Looker erstellen
  • Verbindung zum SMTP-Dienst von Looker herstellen

Voraussetzungen

def88091b42bfe4d.png

2. Aufgaben

Sie richten ein Erstellernetzwerk (looker-psc-demo) ein, um einen internen TCP-Proxy-Load-Balancer und ein Internet-NEG bereitzustellen, das als Dienst über Private Service Connect (PSC) veröffentlicht wird. Nach der Veröffentlichung führen Sie die folgenden Aktionen aus, um den Zugriff auf den Producer-Dienst zu validieren:

  • PSC-Endpunkt in Looker erstellen, der dem Dienstanhang des Diensterstellers zugeordnet ist
  • SMTP-E-Mail-Einstellungen in der Looker-Konsole erstellen

3. Netzwerkanforderungen

Unten finden Sie die Aufschlüsselung der Netzwerkanforderungen für das Erstellernetzwerk. Der Nutzer in diesem Codelab ist die Looker PSC-Instanz.

Komponenten

Beschreibung

VPC (looker-psc-demo)

VPC im benutzerdefinierten Modus

PSC-NAT-Subnetz

Pakete aus dem VPC-Netzwerk des Nutzers werden mithilfe von Quell-NAT (SNAT) übersetzt, sodass ihre ursprünglichen Quell-IP-Adressen in Quell-IP-Adressen aus dem NAT-Subnetz im VPC-Netzwerk des Erstellers umgewandelt werden.

Subnetz der PSC-Weiterleitungsregel

Wird verwendet, um eine IP-Adresse für den regionalen internen TCP-Proxy-Load-Balancer zuzuweisen.

PSC-NEG-Subnetz

Wird verwendet, um eine IP-Adresse für die Netzwerk-Endpunktgruppe zuzuweisen.

Nur-Proxy-Subnetz

Jedem der Proxys des Load-Balancers wird eine interne IP-Adresse zugewiesen. Pakete, die von einem Proxy an eine Backend-VM oder einen Backend-Endpunkt gesendet werden, haben eine Quell-IP-Adresse aus dem Nur-Proxy-Subnetz.

Internet-NEG

Eine Ressource, mit der ein externes Backend für den Load Balancer definiert wird. Der Endpunkt darf nicht nur über Cloud VPN oder Cloud Interconnect erreichbar sein.

Backend-Dienst

Ein Back-End-Dienst fungiert als Brücke zwischen Ihrem Load-Balancer und Ihren Back-End-Ressourcen. Im Tutorial ist der Back-End-Dienst mit der Internet-NEG verknüpft.

Cloud Router

Cloud NAT nutzt Cloud Router für Funktionen der Steuerungsebene, aber nicht für die Verwaltung von BGP-Sitzungen.

Cloud NAT

Die regionale Internet-NEG nutzt Cloud NAT für ausgehenden Internet-Traffic.

4. Codelab-Topologie

a4eb7693cbdbdfd4.png

5. Einrichtung und Anforderungen

Umgebung zum selbstbestimmten Lernen einrichten

  1. Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

Cloud Shell starten

Während Sie Google Cloud von Ihrem Laptop aus per Fernzugriff nutzen können, wird in diesem Codelab Google Cloud Shell verwendet, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.

Klicken Sie in der Google Cloud Console rechts oben in der Symbolleiste auf das Cloud Shell-Symbol:

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Alle Aufgaben in diesem Codelab können in einem Browser ausgeführt werden. Sie müssen nichts installieren.

6. Hinweis

APIs aktivieren

Prüfen Sie in Cloud Shell, ob Ihre Projekt-ID eingerichtet ist:

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
echo $project
echo $region

Aktivieren Sie alle erforderlichen Dienste:

gcloud services enable compute.googleapis.com

7. Ersteller-VPC-Netzwerk erstellen

VPC-Netzwerk

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud compute networks create looker-psc-demo --subnet-mode custom

Subnetze erstellen

Das PSC-Subnetz wird zum Zweck der Network Address Translation dem PSC-Dienstanhang zugeordnet.

Erstellen Sie in Cloud Shell das PSC-NAT-Subnetz:

gcloud compute networks subnets create producer-psc-nat-subnet --network looker-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT

Erstellen Sie in Cloud Shell das Subnetz für die Weiterleitungsregel des Producers:

gcloud compute networks subnets create producer-psc-fr-subnet --network looker-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access

Erstellen Sie in Cloud Shell das regionale Nur-Proxy-Subnetz für den Producer:

gcloud compute networks subnets create $region-proxy-only-subnet \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=$region \
  --network=looker-psc-demo \
  --range=10.10.10.0/24

Public NAT-Gateway erstellen

Das NAT-Gateway wird vom regionalen internen TCP-Proxy-Load-Balancer für ausgehenden Internettraffic mit der Konfigurationsoption „–endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB“ verwendet. Daher wird ausgehender Internettraffic von GCE/GKE nicht vom selben NAT-Gateway unterstützt. Stellen Sie ein zusätzliches NAT-Gateway mit –endpoint-types=ENDPOINT_TYPE_VM für den Internet-Ausgang von GCE/GKE bereit.

Erstellen Sie den Cloud Router in Cloud Shell:

gcloud compute routers create looker-psc-demo-cloud-router --network looker-psc-demo --region $region

Erstellen Sie in Cloud Shell das Cloud NAT-Gateway, das den Internet-Egress für den TCP-Proxy-Load-Balancer ermöglicht:

gcloud compute routers nats create looker-psc-demo-natgw \
  --router=looker-psc-demo-cloud-router \
  --endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
  --nat-custom-subnet-ip-ranges=$region-proxy-only-subnet \
  --auto-allocate-nat-external-ips \
  --region=$region

IP-Adresse des Load-Balancers reservieren

Reservieren Sie in Cloud Shell eine interne IP-Adresse für den Load Balancer:

gcloud compute addresses create internet-neg-lb-ip \
  --region=$region \
  --subnet=producer-psc-fr-subnet

Sehen Sie sich in Cloud Shell die reservierte IP-Adresse an.

gcloud compute addresses describe internet-neg-lb-ip \
  --region=$region | grep -i address:

Beispielausgabe:

user@cloudshell$ gcloud compute addresses describe internet-neg-lb-ip   --region=$region | grep -i address:
address: 172.16.20.2

Internet-NEG einrichten

Erstellen Sie eine Internet-NEG und legen Sie „–network-endpoint-type“ auf „internet-fqdn-port“ fest (der Hostname und der Port, an dem Ihr externes Backend erreicht werden kann).

Erstellen Sie in Cloud Shell eine Internet-NEG für github.com.

gcloud compute network-endpoint-groups create smtp-internet-neg \
    --network-endpoint-type=INTERNET_FQDN_PORT \
    --network=looker-psc-demo \
    --region=$region

Aktualisieren Sie in Cloud Shell die Internet-NEG „smtp-internet-neg“ mit dem FQDN „notifications-pa.googleapis.com“ und Port 443.

gcloud compute network-endpoint-groups update smtp-internet-neg \
    --add-endpoint="fqdn=notifications-pa.googleapis.com,port=443" \
    --region=$region

Netzwerk-Firewallrichtlinie und Firewallregeln erstellen

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud compute network-firewall-policies create looker-psc-demo-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy looker-psc-demo-policy --network looker-psc-demo --name looker-psc-demo --global-firewall-policy

Die folgende Firewallregel lässt Traffic vom PSC-NAT-Subnetzbereich zu allen Instanzen im Netzwerk zu.

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy looker-psc-demo-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp

8. Producer-Dienst erstellen

Load Balancer-Komponenten erstellen

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud compute backend-services create producer-backend-svc  --protocol=tcp --region=$region --load-balancing-scheme=INTERNAL_MANAGED

gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=smtp-internet-neg --network-endpoint-group-region=$region --region=$region

Erstellen Sie in Cloud Shell einen Ziel-TCP-Proxy, um Anfragen an Ihren Backend-Dienst weiterzuleiten:

gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
      --backend-service=producer-backend-svc  \
      --region=$region

Erstellen Sie mit der folgenden Syntax eine Weiterleitungsregel (interner TCP-Proxy-Load-Balancer).

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud compute forwarding-rules create producer-smtp-fr \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network-tier=PREMIUM \
     --network=looker-psc-demo \
     --subnet=producer-psc-fr-subnet \
     --address=internet-neg-lb-ip \
     --target-tcp-proxy=producer-lb-tcp-proxy \
     --target-tcp-proxy-region=$region \
     --region=$region \
     --ports=443

Dienstanhang erstellen

Erstellen Sie in Cloud Shell den Dienstanhang „smtp-svc-attachment“:

gcloud compute service-attachments create smtp-svc-attachment --region=$region --producer-forwarding-rule=producer-smtp-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet

Rufen Sie als Nächstes den Dienstanhang ab, der im selfLink-URI aufgeführt ist, der mit „projects“ beginnt, und notieren Sie ihn, um den PSC-Endpunkt in Looker zu konfigurieren.

selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/github-svc-attachment-https

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud compute service-attachments describe smtp-svc-attachment --region=$region

Beispiel:

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-10-04T14:56:50.409-07:00'
description: ''
enableProxyProtocol: false
fingerprint: KUPXTZjrGkw=
id: '8947818105173563981'
kind: compute#serviceAttachment
name: smtp-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '23100082169578472'
  low: '8947818105173563981'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/smtp-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-smtp-fr

Rufen Sie in der Cloud Console Folgendes auf:

„Network Services“ → „Private Service Connect“ → „Published Services“

b847b5ee22e3582e.png

b9a7d46c8dea4476.png

9. PSC-Endpunktverbindung in Looker herstellen

Im folgenden Abschnitt verknüpfen Sie den Dienstanhang des Erstellers mit Looker Core PSC, indem Sie die Flags „–psc-service-attachment“ in Cloud Shell für eine einzelne Domain verwenden.

Erstellen Sie in Cloud Shell die PSC-Zuordnung, indem Sie die folgenden Parameter an Ihre Umgebung anpassen:

  • INSTANCE_NAME: Der Name Ihrer Looker (Google Cloud Core)-Instanz.
  • DOMAIN_1: notifications-pa.googleapis.com
  • SERVICE_ATTACHMENT_1: URI, der beim Beschreiben des Dienstanhangs „smtp-svc-attachment“ erfasst wurde
  • REGION: Die Region, in der Ihre Looker (Google Cloud Core)-Instanz gehostet wird.

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment  domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION

Beispiel:

gcloud looker instances update looker-psc-instance \
--psc-service-attachment  domain=notifications-pa.googleapis.com,attachment=projects/$project/regions/$region/serviceAttachments/smtp-svc-attachment \
--region=$region

Prüfen Sie in Cloud Shell, ob der connectionStatus der serviceAttachments „ACCEPTED“ ist. Aktualisieren Sie dazu INSTANCE_NAME mit dem Namen Ihrer Looker-PSC-Instanz.

gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json

Beispiel:

gcloud looker instances describe looker-psc-instance --region=$region --format=json

Beispiel:

{
...........................
    "serviceAttachments": [
      {
        "connectionStatus": "ACCEPTED",
        "localFqdn": "notifications-pa.googleapis.com",
        "targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/smtp-svc-attachment"
      }
    ]
  },
  "pscEnabled": true,
  "state": "ACTIVE",
  "updateTime": "2024-10-04T22:02:31.445761128Z"
}

PSC-Endpunkt in der Cloud Console validieren

Sie können die PSC-Verbindung über die Cloud Console validieren.

Rufen Sie in der Cloud Console Folgendes auf:

„Looker“ → „Looker-Instanz“ → „Details“

2d4684d722d31e4b.png

a7593db722f86642.png

10. SMTP-Verbindung testen

In den folgenden Schritten verwenden Sie die Looker-Konsole, um die SMTP-Verbindung zu validieren, indem Sie einen SMTP-Test und -Bericht erstellen.

Test-E-Mail

Looker sendet E-Mails über den Standard-SMTP-Server notifications-pa.googleapis.com. In diesem Fall sind keine zusätzlichen Schritte erforderlich. Wenn Sie einen anderen SMTP-Server für Benachrichtigungen verwenden möchten, lesen Sie den Abschnitt „Benutzerdefinierte SMTP-Konfiguration“.

Öffnen Sie die Looker-Konsole und rufen Sie Folgendes auf:

„Admin“ → „Plattform“ → „SMTP“ → „Test-E-Mail senden“ auswählen

aacb31e399cec9b7.png

Unten sehen Sie die Test-E-Mail, die von Looker stammt:

ff75669fb6993d58.png

E‑Mail mit generiertem Bericht

Rufen Sie Folgendes auf:

„Explore“ → „System Activity“ → „API Usage“ → „API Query Type“ → „Run“

788f6d6d08f5f055.png

Beispielausgabe:

cebecdf5f2e968d1.png

Wenn Sie die Ergebnisse per E‑Mail erhalten möchten, wählen Sie das Zahnradsymbol aus.

c6ddb0b234b58ed4.png

Wählen Sie „Senden“ aus. Ein neues Fenster wird geöffnet.

15b45c5c1bc1b09b.png

Geben Sie Ihre E‑Mail-Adresse ein und wählen Sie „Senden“ aus.

86970bb94247ed62.png

Unten sehen Sie die Test-E-Mail, die von Looker stammt:

c925c8917f8078b3.png

11. Benutzerdefinierte SMTP-Konfiguration

In dieser Anleitung wird der Looker-SMTP-Server verwendet, um E-Mail-Benachrichtigungen über den FQDN notifications-pa.googleapis.com zu senden und den Internet-Egress über Cloud NAT auszuführen. Wenn Sie Ihren eigenen SMTP-Server verwenden möchten, erstellen Sie einen neuen Dienstanhang mit den folgenden Änderungen:

Aktualisieren Sie die Internet-NEG mit dem FQDN Ihres SMTP-Servers:

gcloud compute network-endpoint-groups update smtp-internet-neg \
    --add-endpoint="fqdn=<your SMTP FQDN>,port=443" \
    --region=$region

Geben Sie Ihre SMTP-Domain an, wenn Sie die Looker PSC-Instanz aktualisieren:

  • INSTANCE_NAME: Der Name Ihrer Looker (Google Cloud Core)-Instanz.
  • DOMAIN_1: <FQDN Ihres SMTP-Servers>
  • SERVICE_ATTACHMENT_1: URI, der beim Beschreiben des Dienstanhangs „smtp-svc-attachment“ erfasst wurde
  • REGION: Die Region, in der Ihre Looker (Google Cloud Core)-Instanz gehostet wird.
gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment  domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION

Wenn Sie einen anderen E‑Mail-Dienst verwenden möchten, wählen Sie Benutzerdefinierte E‑Mail-Einstellungen verwenden aus.

a3fe7a0b66c80402.png

12. Bereinigen

Lab-Komponenten über ein einzelnes Cloud Shell-Terminal löschen

gcloud compute service-attachments delete smtp-svc-attachment --region=$region -q

gcloud compute forwarding-rules delete producer-smtp-fr --region=$region -q

gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q

gcloud compute backend-services delete producer-backend-svc --region=$region -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy looker-psc-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=looker-psc-demo-policy  --name=looker-psc-demo --global-firewall-policy -q

gcloud compute network-firewall-policies delete looker-psc-demo-policy --global -q

gcloud compute routers nats delete looker-psc-demo-natgw --router=looker-psc-demo-cloud-router --router-region=$region -q

gcloud compute routers delete looker-psc-demo-cloud-router --region=$region -q

gcloud compute network-endpoint-groups delete smtp-internet-neg --region=$region -q

gcloud compute addresses delete internet-neg-lb-ip --region=$region -q

gcloud compute networks subnets delete producer-psc-fr-subnet producer-psc-nat-subnet $region-proxy-only-subnet --region=$region -q

gcloud compute networks delete looker-psc-demo -q

13. Glückwunsch

Sie haben die Verbindung zum SMTP-Dienst von Looker über die Looker Console, die auf Private Service Connect basiert, erfolgreich konfiguriert und validiert.

Sie haben die Erstellerinfrastruktur erstellt und gelernt, wie Sie eine Internet-NEG, einen Erstellerservice und einen Looker-PSC-Endpunkt erstellen, der die Verbindung zum Erstellerservice ermöglicht.

Cosmopup findet Codelabs toll!!

c911c127bffdee57.jpeg

Nächste Schritte

Hier finden Sie einige Codelabs:

Weitere Informationen und Videos

Referenzdokumente