1. Einführung
In diesem Codelab stellen Sie eine Southbound-HTTPS-Verbindung zu Ihrer selbstverwalteten GitLab-Umgebung her. Dazu verwenden Sie einen internen TCP-Proxy-Load-Balancer und eine Internet-Netzwerk-Endpunktgruppe (NEG), 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 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:

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

Lerninhalte
- Netzwerkanforderungen
- Private Service Connect-Producer-Dienst erstellen
- Private Service Connect-Endpunkt in Looker erstellen
- Verbindung zur selbstverwalteten GitLab-Instanz herstellen
Voraussetzungen
- Google Cloud-Projekt mit Inhaberberechtigungen
- GitLab-Konto und ‑Repository
- Bestehende Looker PSC-Instanz

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
- Erstellen Sie mit der Looker-Konsole ein neues Projekt und testen Sie die HTTPS-Verbindung zu Ihrer selbstverwalteten GitLab-Umgebung.
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, das als FQDN konfiguriert ist, der den lokalen FQDN von GitLab Self-Managed angibt. Der Internet-FQDN führt eine DNS-Suche innerhalb der VPC zur Auflösung durch. |
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. |
4. Codelab-Topologie

5. Einrichtung und Anforderungen
Umgebung zum selbstbestimmten Lernen einrichten
- 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.



- 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_IDangegeben). 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
- 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:

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

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
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 den Zugriff auf die selbstverwaltete GitLab-Instanz „gitlabonprem.com“.
gcloud compute network-endpoint-groups create gitlab-self-managed-internet-neg \
--network-endpoint-type=INTERNET_FQDN_PORT \
--network=looker-psc-demo \
--region=$region
Aktualisieren Sie in Cloud Shell die Internet-NEG „gitlab-self-managed-internet-neg“ mit dem FQDN „gitlabonprem.com“ und dem Port 443.
gcloud compute network-endpoint-groups update gitlab-self-managed-internet-neg \
--add-endpoint="fqdn=gitlabonprem.com,port=443" \
--region=$region
Netzwerk-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.
Erstellen Sie in Cloud Shell die IAP-Firewallregel.
gcloud compute firewall-rules create ssh-iap-looker-psc-demo \
--network looker-psc-demo \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
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=gitlab-self-managed-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-gitlab-self-managed-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 die Dienstanhänge gitlab-self-managed-svc-attachment-https mit automatischer Genehmigung, die die Verbindung von Looker Core zum Dienstanhang ermöglicht. Wenn Sie den Zugriff auf die Dienstanhänge steuern möchten, wird die Option explizite Genehmigungen unterstützt.
gcloud compute service-attachments create gitlab-self-managed-svc-attachment-https --region=$region --producer-forwarding-rule=producer-gitlab-self-managed-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/gitlab-self-managed-svc-attachment-https
Führen Sie in Cloud Shell folgende Schritte aus:
gcloud compute service-attachments describe gitlab-self-managed-svc-attachment-https --region=$region
Beispiel:
connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2025-03-04T18:55:42.254-08:00'
description: ''
enableProxyProtocol: false
fingerprint: MlY9GLLGsgE=
id: '9103522880241140673'
kind: compute#serviceAttachment
name: gitlab-self-managed-svc-attachment-https
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
high: '115404658846991336'
low: '9103522880241140673'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1
selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/serviceAttachments/gitlab-self-managed-svc-attachment-https
targetService: https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/forwardingRules/producer-gitlab-self-managed-fr
Rufen Sie in der Cloud Console Folgendes auf:
„Network Services“ → „Private Service Connect“ → „Published Services“


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: gitlabonprem.com
- SERVICE_ATTACHMENT_1: URI, der beim Beschreiben des Dienstanhangs erfasst wurde, gitlab-self-managed-svc-attachment-https.
- 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=gitlabonprem.com,attachment=projects/$project/regions/$region/serviceAttachments/gitlab-self-managed-svc-attachment-https \
--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:
{
"adminSettings": {},
"createTime": "2024-08-23T00:00:45.339063195Z",
"customDomain": {
"domain": "cosmopup.looker.com",
"state": "AVAILABLE"
},
"encryptionConfig": {},
"lookerVersion": "24.12.28",
"name": "projects/$project/locations/$region/instances/looker-psc-instance",
"platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
"pscConfig": {
"allowedVpcs": [
"projects/$project/global/networks/looker-psc-demo"
],
"lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/$region/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
"serviceAttachments": [
{
"connectionStatus": "ACCEPTED",
"localFqdn": "gitlabonprem.com",
"targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/gitlab-self-managed-svc-attachment-https"
}
]
},
"pscEnabled": true,
"state": "ACTIVE",
"updateTime": "2024-08-30T17:47:33.440271635Z"
}
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“


10. DNS-Auflösung
Erstellen Sie im folgenden Abschnitt eine GCE-Instanz und prüfen Sie die DNS-Auflösung für die selbstverwaltete GitLab-Instanz „gitlabonprem.com“ mit einem PING. Wie erwartet schlägt die Auflösung fehl und es ist eine private DNS-Zone für gitlabonprem.com erforderlich.
11. GCE-Instanz erstellen
Erstellen Sie in Cloud Shell die GCE-Instanz, die zum Validieren der DNS-Auflösung verwendet wird.
gcloud compute instances create gce-dns-lookup \
--project=$projectid \
--machine-type=e2-micro \
--image-family debian-11 \
--no-address \
--image-project debian-cloud \
--zone us-central1-a \
--subnet=producer-psc-fr-subnet
Melden Sie sich über IAP in Cloud Shell auf der Consumer-VM an, um die Verbindung zum Producer-Dienst durch Ausführen eines „curl“-Befehls zu validieren. Bei einer Zeitüberschreitung versuchen Sie es noch einmal.
gcloud compute ssh gce-dns-lookup --project=$projectid --zone=us-central1-a --tunnel-through-iap
Führen Sie im Betriebssystem einen PING-Befehl für gitlabonprem.com aus. Der Fehler ist zu erwarten.
ping gitlabonprem.com
Beispiel:
user@gce-dns-lookup:~$ ping gitlabonprem.com
ping: gitlabonprem.com: Name or service not known
Beenden Sie das Betriebssystem, um zum Cloud Shell-Terminal zurückzukehren.
exit
12. Private DNS-Zone erstellen
Erstellen Sie in Cloud Shell die private Cloud DNS-Zone.
gcloud dns --project=$projectid managed-zones create gitlab-self-managed --description="" --dns-name="gitlabonprem.com." --visibility="private" --networks="https://compute.googleapis.com/compute/v1/projects/$projectid/global/networks/looker-psc-demo"
Erstellen Sie in Cloud Shell den A-Eintrag, der aus der IP-Adresse der selbstverwalteten GitLab-Instanz (192.168.10.4) besteht.
gcloud dns --project=$projectid record-sets create gitlabonprem.com. --zone="gitlab-self-managed" --type="A" --ttl="300" --rrdatas="192.168.10.4"
Melden Sie sich über IAP in Cloud Shell auf der Consumer-VM an, um die Verbindung zum Producer-Dienst durch Ausführen eines „curl“-Befehls zu validieren. Bei einer Zeitüberschreitung versuchen Sie es noch einmal.
gcloud compute ssh gce-dns-lookup --project=$projectid --zone=us-central1-a --tunnel-through-iap
Führen Sie im Betriebssystem einen PING-Befehl für gitlabonprem.com aus, der in 192.168.10.4 aufgelöst wird.
ping gitlabonprem.com
Beispiel:
user@gce-dns-lookup:~$ ping gitlabonprem.com
PING gitlabonprem.com (192.168.10.4) 56(84) bytes of data
Beenden Sie das Betriebssystem, um zum Cloud Shell-Terminal zurückzukehren.
exit
13. Hybridkonnektivität
Der FQDN „gitlabonprem.com“ kann jetzt mit der privaten IP-Adresse aufgelöst werden, die lokal gehostet wird. Als Nächstes muss Hybrid Networking (z.B. Interconnect, HA VPN) zwischen der VPC „looker-psc-demo“ und dem lokalen Netzwerk konfiguriert werden, um eine Verbindung zu ermöglichen.
Im Folgenden sind die Schritte aufgeführt, die erforderlich sind, um eine Hybrid-NEG-Verbindung zu lokalen Systemen herzustellen:
- Produkt für die Netzwerkverbindung auswählen | Google Cloud
- In einer Hub-and-Spoke-Architektur mit VPC-Peering wird das hybride NEG in derselben VPC wie der Cloud Router (Hub) bereitgestellt.
- Achten Sie darauf, dass die lokalen Firewalls für den Nur-Proxy-Subnetzbereich aktualisiert werden, da dieses Subnetz als Quell-IP-Adresse für die Kommunikation mit lokalen Arbeitslasten dient.
- Proxy-only-Subnetz über den Cloud Router als benutzerdefiniertes Route Advertisement bewerben
14. Verbindung testen
In den folgenden Schritten erstellen Sie mit der Looker Console ein Projekt, um die HTTPS-Verbindung zu gitlabonprem.com zu validieren. Verwenden Sie dazu die im Abschnitt Git-Verbindung einrichten und testen beschriebene Vorgehensweise.

15. Bereinigen
Lab-Komponenten über ein einzelnes Cloud Shell-Terminal löschen
gcloud compute service-attachments delete gitlab-self-managed-svc-attachment-https --region=$region -q
gcloud compute forwarding-rules delete producer-gitlab-self-managed-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-endpoint-groups delete gitlab-self-managed-internet-neg --region=$region -q
gcloud compute instances delete gce-dns-lookup --zone=us-central1-a -q
gcloud compute networks subnets delete producer-psc-fr-subnet producer-psc-nat-subnet $region-proxy-only-subnet --region=$region -q
gcloud dns --project=$projectid record-sets delete gitlabonprem.com. --zone="gitlab-sel
f-managed" --type="A"
gcloud dns --project=$projectid managed-zones delete gitlab-self-managed
gcloud compute networks delete looker-psc-demo -q
16. Glückwunsch
Sie haben die Verbindung zu einer selbstverwalteten GitLab-Instanz mit der Looker-Konsole, 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!!

Nächste Schritte
Hier finden Sie einige Codelabs:
- Private Service Connect zum Veröffentlichen und Nutzen von Diensten verwenden
- Über Hybrid Networking mit Private Service Connect und einem internen TCP-Proxy-Load-Balancer eine Verbindung zu On-Premise-Diensten herstellen
- Zugriff auf alle veröffentlichten Private Service Connect-Codelabs