Looker PSC Southbound SSH Internet NEG

1. Einführung

In diesem Codelab stellen Sie eine nach Süden gebundene SSH-Verbindung zu GitHub mit einem internen TCP-Proxy-Load-Balancer und einer Internetnetzwerk-Endpunktgruppe her, die von Looker PSC als Dienstnutzer aufgerufen wird.

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

Abbildung 1:

145ea4672c3a3b14.png

Der Zugriff in Richtung Süden, auch als Reverse PSC bezeichnet, ermöglicht es dem Nutzer, einen veröffentlichten Dienst als Producer zu erstellen, um Looker Zugriff auf lokale Endpunkte, in einer VPC, auf verwaltete Dienste und auf das Internet zu gewähren. Verbindungen in Richtung Süden können in jeder Region bereitgestellt werden, unabhängig davon, wo Looker PSC bereitgestellt wird (siehe Abbildung 2).

Abbildung 2.

259493afd914f68b.png

Aufgaben in diesem Lab

  • Netzwerkanforderungen
  • Private Service Connect-Producer-Dienst erstellen
  • Private Service Connect-Endpunkt in Looker erstellen
  • Verbindung von Looker zu GitHub über eine Testverbindung herstellen

Voraussetzungen

def88091b42bfe4d.png

2. Aufgaben

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

  • Erstellen Sie in Looker einen PSC-Endpunkt, der mit dem Anhang des Producer-Dienstes verknüpft ist
  • Verwenden Sie die Looker-Konsole, um ein neues Projekt zu erstellen und die SSH-Verbindung zu GitHub.com mit dem Verfahren Über SSH mit Git verbinden zu testen.

3. Netzwerkanforderungen

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

Produzentennetzwerk

Komponenten

Beschreibung

VPC (looker-psc-demo)

VPC im benutzerdefinierten Modus

PSC-NAT-Subnetz

Pakete aus dem Nutzer-VPC-Netzwerk werden mit 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 zum Zuweisen einer IP-Adresse für den regionalen internen TCP-Proxy-Load-Balancer verwendet

PSC-NEG-Subnetz

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

Nur-Proxy-Subnetz

Jedem Proxy des Load Balancers wird eine interne IP-Adresse zugewiesen. Pakete, die von einem Proxy an eine Back-End-VM oder einen Back-End-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 dient als Brücke zwischen Ihrem Load Balancer und Ihren Back-End-Ressourcen. In diesem Tutorial ist der Back-End-Dienst mit der Internet-NEG verknüpft.

Cloud Router

Cloud NAT nutzt Cloud Router für die Steuerungsebene, aber nicht für die BGP-Sitzungsverwaltung.

Cloud NAT

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

4. Codelab-Topologie

dfa4dd1d681a66da.png

5. Einrichtung und Anforderungen

Umgebung für das selbstbestimmte 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 ein Konto erstellen.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es handelt sich um eine Zeichenfolge, die von Google APIs nicht verwendet wird. Sie können ihn jederzeit aktualisieren.
  • Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und kann nach der Festlegung nicht mehr geändert werden. Die Cloud Console generiert automatisch einen eindeutigen String. ist Ihnen meist egal, was es ist. In den meisten Codelabs musst du auf deine Projekt-ID verweisen, die üblicherweise als PROJECT_ID bezeichnet wird. Wenn Ihnen die generierte ID nicht gefällt, können Sie eine weitere zufällige ID generieren. Alternativ können Sie Ihr eigenes Konto ausprobieren und prüfen, ob es verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts erhalten.
  • Zur Information: Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten finden Sie in der Dokumentation.
  1. Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs verwenden zu können. Dieses Codelab ist kostengünstig. Wenn Sie die Ressourcen herunterfahren möchten, um Kosten nach Abschluss dieser Anleitung zu vermeiden, können Sie die von Ihnen erstellten Ressourcen oder das Projekt löschen. Neue Google Cloud-Nutzer haben Anspruch auf das kostenlose Testprogramm mit 300$Guthaben.

Cloud Shell starten

Sie können Google Cloud zwar per Fernzugriff von Ihrem Laptop aus nutzen, in diesem Codelab verwenden Sie jedoch Google Cloud Shell, 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 dauert nur einen Moment. Wenn der Vorgang abgeschlossen ist, sollte in etwa Folgendes angezeigt werden:

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 auf 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. Vorbereitung

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. Producer-VPC-Netzwerk erstellen

VPC-Netzwerk

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

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

Subnetze erstellen

Das PSC-Subnetz wird dem PSC-Dienstanhang zum Zweck der Network Address Translation 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-Producer-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

Öffentliches NAT-Gateway erstellen

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

Erstellen Sie in Cloud Shell den Cloud Router:

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 ausgehenden Internettraffic für den TCP-Proxy-Load-Balancer aktiviert:

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

Rufen Sie in Cloud Shell die reservierte IP-Adresse auf.

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

Beispiel:

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 setzen Sie den -network-endpoint-type auf internet-fqdn-port (den Hostnamen und Port, an dem Ihr externes Backend erreichbar ist).

Erstellen Sie in Cloud Shell eine Internet-NEG, die für github.com verwendet wird.

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

Aktualisieren Sie in Cloud Shell die Internet-NEG github-internet-neg-ssh mit dem FQDN github.com und Port 22

gcloud compute network-endpoint-groups update github-internet-neg-ssh \
    --add-endpoint="fqdn=github.com,port=22" \
    --region=$region

Netzwerk-Firewallrichtlinie und Firewallregeln erstellen

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

Mit der folgenden Firewallregel wird Traffic aus dem PSC-NAT-Subnetzbereich zu allen Instanzen im Netzwerk zugelassen.

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=github-internet-neg-ssh --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 die folgenden Schritte aus:

gcloud compute forwarding-rules create producer-github-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=22

Dienstanhang erstellen

Erstellen Sie in Cloud Shell die Dienstanwendung „github-svc-attachment-ssh“:

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

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

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

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

gcloud compute service-attachments describe github-svc-attachment-ssh --region=$region

Beispiel für die erwartete Ausgabe

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-08-31T13:43:07.078-07:00'
description: ''
enableProxyProtocol: false
fingerprint: O5OtqHR33v4=
id: '7557641709467614900'
kind: compute#serviceAttachment
name: github-svc-attachment-ssh
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '19348441121424360'
  low: '7557641709467614900'
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/github-svc-attachment-ssh
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-github-fr

Rufen Sie in der Cloud Console Folgendes auf:

Netzwerkdienste → Private Service Connect → Veröffentlichte Dienste

30b1a280966b1f06.png

4eafe698193f5f44.png

9. PSC-Endpunktverbindung in Looker herstellen

Im folgenden Abschnitt ordnen Sie den Dienstanhang des Erstellers dem PSC von Looker Core mithilfe der Flags „–psc-service-attachment“ in Cloud Shell für eine einzelne Domain zu.

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

  • INSTANCE_NAME: Der Name Ihrer Looker (Google Cloud Core)-Instanz.
  • DOMAIN_1: githubssh.com
  • SERVICE_ATTACHMENT_1: URI, der bei der Beschreibung des Dienstanhangs „github-svc-attachment-ssh“ erfasst wurde.
  • REGION: Die Region, in der Ihre Instanz von Looker (Google Cloud Core) gehostet wird.

Führen Sie in Cloud Shell die folgenden 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=githubssh.com,attachment=projects/$project/regions/$region/serviceAttachments/github-svc-attachment-ssh \
--region=$region

Prüfen Sie in Cloud Shell, ob der connectionStatus für serviceAttachments "ACCEPTED" lautet. Ersetzen Sie INSTANCE_NAME durch den Namen Ihrer Looker-PSC-Instanz.

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

Beispiel:

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

Beispiel:

{
  "adminSettings": {},
  "createTime": "2024-08-23T00:00:45.339063195Z",
  "customDomain": {
    "domain": "cosmopup.com",
    "state": "AVAILABLE"
  },
  "encryptionConfig": {},
  "lookerVersion": "24.14.18",
  "name": "projects/$project/locations/$region/instances/looker-psc-instance",
  "platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
  "pscConfig": {
    "allowedVpcs": [
      "projects/$project/global/networks/looker-psc-demo",
      "projects/$project/global/networks/looker-shared-vpc"
    ],
    "lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/$region/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
    "serviceAttachments": [
      {
        "connectionStatus": "ACCEPTED",
        "localFqdn": "githubssh.com",
        "targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/github-svc-attachment-ssh"
      }
    ]
  },
  "pscEnabled": true,
  "state": "ACTIVE",
  "updateTime": "2024-08-31T20:53:04.824018122Z"
}

PSC-Endpunkt in der Cloud Console prüfen

In der Cloud Console können Sie die PSC-Verbindung prüfen.

Rufen Sie in der Cloud Console Folgendes auf:

Looker → Looker-Instanz → Details

2d4684d722d31e4b.png

db670bb008ea3fc4.png

10. Verbindung zu GitHub testen

In den folgenden Schritten erstellen Sie mit der Looker Console ein Projekt, um die SSH-Verbindung zu GitHub.com zu validieren. Dazu aktualisieren Sie in der Looker-Benutzeroberfläche die Domain github.com in githubssh.com. Diese Aktion ist nur für SSH-Verbindungen zu GitHub erforderlich.

11. Erstellen Sie ein neues Projekt

Entwicklermodus aktivieren

Rufen Sie in der Looker Console Folgendes auf:

Aktivieren Sie den Entwicklungsmodus (untere linke Seite), nachdem Sie das Banner „Sie befinden sich im Entwicklungsmodus“ ausgewählt haben. angezeigt wird.

70c9ded749decfbe.png

Neues Projekt erstellen

Rufen Sie in der Cloud Console Folgendes auf:

Entwickeln → Projekte

e8ae11e0392a776d.png

„Neues LookML-Projekt“ auswählen

65a3c2573e97e1e9.png

Geben Sie einen Projektnamen ein, wählen Sie „Leeres Projekt“ und dann „Projekt erstellen“ aus.

dbb890960291aa84.png

Wählen Sie „Git konfigurieren“ aus.

42f5e51ce70642ad.png

Git konfigurieren

3962a1fe7ac8da77.png

Wenn Sie „Weiter“ auswählen, werden Sie aufgefordert, die Repository-URL und den Git-Hostingdienst zu validieren.

743e5d963cfe6f82.png

Fügen Sie dem GitHub-Repository den Bereitstellungsschlüssel hinzu. Achten Sie darauf, Schreibzugriff zuzulassen. Wählen Sie nach der Aktualisierung die Option „Test and Finalize Setup“ (Einrichtung testen und abschließen) aus.

4894e0af6421802e.png

Git-Aktionen auswählen

e87931dbf7e265f3.png

„Git-Verbindung testen“ auswählen

73d90adf267120af.png

Git-Verbindungstest validieren

f69bc63b9c595aa1.png

12. Bereinigen

Löschen Sie die Lab-Komponenten über ein einzelnes Cloud Shell-Terminal

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

gcloud compute forwarding-rules delete producer-github-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 addresses delete internet-neg-lb-ip --region=$region -q

gcloud compute network-endpoint-groups delete github-internet-neg-ssh --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

Herzlichen Glückwunsch! Sie haben die Verbindung zu GitHub über die Looker Console mit Private Service Connect erfolgreich konfiguriert und validiert.

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

Cosmopup findet Codelabs super!

c911c127bffdee57.jpeg

Was liegt als Nächstes an?

Sehen Sie sich einige dieser Codelabs an:

Weitere Informationen und Videos

Referenzdokumente