1. Einführung
Mit Private Service Connect können Dienstersteller Dienste privat von einem VPC-Netzwerk für ein anderes freigeben. Nutzer können über PSC-Endpunkte oder PSC-Back-Ends auf Erstellerdienste zugreifen.
Der Schwerpunkt dieses Codelabs liegt auf PSC-Back-Ends. PSC-Back-Ends werden in Verbindung mit Google Cloud-Proxy-Load-Balancern (entweder Application oder Network) verwendet. Die Verwendung von PSC-Back-Ends bietet detailliertere Steuerungsmöglichkeiten auf Verbraucherseite, z. B.:
- Umfassendere Beobachtbarkeit und Protokollierung
- Cloud Armor-Integration
- Benutzerdefinierte URLs
- Erweiterte Traffic-Verwaltung
- Benutzerdefinierte TLS-Zertifikate
In diesem Codelab erfahren Sie, wie Sie ein Private Service Connect-Back-End mit dem globalen externen Application Load Balancer erstellen, um privat auf einen Producer-Dienst in einem anderen Netzwerk zuzugreifen.
Lerninhalte
- PSC-Backend erstellen und konfigurieren, das dem globalen externen Application Load Balancer zugeordnet ist
- Verwalteten Apache-Webdienst konfigurieren und als PSC-Dienst über einen Dienstanhang bereitstellen
- SSL-Zertifikate erstellen, um SSL auf internen und externen Application Load Balancern zu beenden
- Öffentliche Cloud DNS-Zone für den Zugriff auf den PSC-Dienst konfigurieren
Voraussetzungen
- Ein Google Cloud-Projekt mit Inhaberberechtigungen
2. Testumgebung
Die Umgebung, die Sie erstellen, besteht aus einer Consumer-VPC und einer Producer-VPC. In der Producer-VPC stellen Sie eine verwaltete Instanzgruppe aus einer Instanzvorlage bereit, die einen Open-Source-Apache-Webdienst erstellt. Außerdem stellen Sie eine Test-VM bereit, um die ordnungsgemäße lokale Funktion des Dienstes zu gewährleisten. Sie stellen den Apache-Dienst als PSC-Erstellerdienst über einen Dienstanhang bereit.
In der Consumer-VPC stellen Sie einen globalen externen Application Load Balancer mit einem PSC-Backend-Dienst bereit, der auf den Apache-Dienst verweist. Anschließend richten Sie eine öffentliche DNS-Zone ein, um über das öffentliche Internet auf den PSC-Dienst zuzugreifen.

3. 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. 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.
4. 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-NAME] export project=YOUR-PROJECT-NAME export region=us-central1 echo $project echo $region
Alle erforderlichen Dienste aktivieren
gcloud services enable compute.googleapis.com gcloud services enable servicedirectory.googleapis.com gcloud services enable dns.googleapis.com
5. Ersteller-VPC einrichten
VPC-Netzwerk erstellen
Über Cloud Shell
gcloud compute networks create producer-vpc --subnet-mode custom
Subnetze erstellen
Im Producer-VPC werden zwei Subnetze für allgemeine Zwecke bereitgestellt. Das Dienst-Subnetz wird verwendet, um die Apache-Webdienst-VMs sowie die Weiterleitungsregel des Load-Balancers bereitzustellen. Das Testclient-Subnetz befindet sich in einer anderen Region und wird zum Bereitstellen einer VM verwendet, um den Apache-Dienst mit aktiviertem globalen Zugriff zu testen.
Über Cloud Shell
gcloud compute networks subnets create service-subnet \
--network=producer-vpc \
--range=10.0.0.0/28 \
--region=$region
Über Cloud Shell
gcloud compute networks subnets create test-client-subnet \
--network=producer-vpc \
--range=10.0.1.0/28 \
--region=us-east4
Außerdem müssen wir ein Nur-Proxy-Subnetz bereitstellen, das mit dem regionalen internen Application Load Balancer verwendet werden soll.
Über Cloud Shell
gcloud compute networks subnets create central-proxy-subnet \
--network=producer-vpc \
--range=10.100.101.0/24 \
--region=$region \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE
Wenn ein PSC-Dienst bereitgestellt wird, benötigt jeder eindeutige Dienst ein entsprechendes PSC-NAT-Subnetz, das dem Dienstanhang zugeordnet ist. Dieses Subnetz sollte je nach Anzahl der erwarteten verbundenen Endpunkte entsprechend dimensioniert werden.
Über Cloud Shell
gcloud compute networks subnets create psc-nat-subnet \
--network=producer-vpc \
--region=$region \
--range=10.100.100.0/24 \
--purpose=PRIVATE_SERVICE_CONNECT
Cloud NAT erstellen
Für die Installation der richtigen Pakete für unsere Producer-Dienste ist ein Cloud NAT erforderlich.
Über Cloud Shell
gcloud compute routers create central-cr \
--network=producer-vpc \
--region=$region
Über Cloud Shell
gcloud compute routers nats create central-nat \
--router=central-cr \
--region=$region \
--nat-all-subnet-ip-ranges \
--auto-allocate-nat-external-ips
Richtlinie und Regeln für die Netzwerk-Firewall erstellen
Über Cloud Shell
gcloud compute network-firewall-policies create producer-vpc-policy --global
gcloud compute network-firewall-policies associations create \
--firewall-policy producer-vpc-policy \
--network producer-vpc \
--name network-producer-vpc \
--global-firewall-policy
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 network-firewall-policies rules create 1000 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "SSH with IAP" \
--direction INGRESS \
--src-ip-ranges 35.235.240.0/20 \
--layer4-configs tcp:22 \
--global-firewall-policy
Es sind zwei zusätzliche Firewallregeln erforderlich, um eingehenden Traffic zu den Load-Balancer-Back-Ends zuzulassen, der aus dem Nur-Proxy-Subnetz des Load-Balancers (2000) stammt, sowie eine Regel, um Load-Balancer-Systemdiagnosen für die Back-End-Instanzen zuzulassen (2001).
Über Cloud Shell
gcloud compute network-firewall-policies rules create 2000 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "allow traffic from load balancer proxy subnet" \
--direction INGRESS \
--src-ip-ranges 10.100.101.0/24 \
--layer4-configs tcp:443 \
--global-firewall-policy
gcloud compute network-firewall-policies rules create 2001 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "allow load balancer health checks" \
--direction INGRESS \
--src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \
--layer4-configs tcp:443 \
--global-firewall-policy
6. Apache-Webdienst erstellen
Wir erstellen einen einfachen Apache-Webdienst, der „PSC Service“ anzeigt.
Instanzvorlage erstellen
Über Cloud Shell
gcloud compute instance-templates create apache-service-template \
--network producer-vpc \
--subnet service-subnet \
--region $region \
--no-address \
--metadata startup-script='#! /bin/bash
sudo apt-get update
apt-get install apache2 -y
a2enmod ssl
sudo a2ensite default-ssl
echo "PSC Service" | \
tee /var/www/html/index.html
systemctl restart apache2'
Systemdiagnose für MIG erstellen
Über Cloud Shell
gcloud compute health-checks create https service-mig-healthcheck \
--port=443 \
--global
Verwaltete Instanzgruppe erstellen
Über Cloud Shell
gcloud compute instance-groups managed create psc-service-mig \
--region $region \
--size=2 \
--template=apache-service-template \
--health-check=service-mig-healthcheck
gcloud compute instance-groups managed set-named-ports psc-service-mig \
--named-ports=https:443 \
--region=$region
7. Selbst signiertes Zertifikat erstellen
Führen Sie Schritt 1 der Anleitung hier aus, um ein selbst signiertes Zertifikat zu erstellen. Sie können alle Befehle in Cloud Shell ausführen. Kehren Sie hierher zurück, wenn Sie Schritt 1 abgeschlossen haben. IHR ALLGEMEINER NAME MUSS MIT EXAMPLE.COM KONFIGURIERT WERDEN.
Erstellen Sie eine Zertifikatsressource, die Sie Ihrem Load-Balancer zuordnen. Ersetzen Sie die Parameter für das Zertifikat und den privaten Schlüssel durch Ihre spezifischen Dateinamen.
Über Cloud Shell
gcloud compute ssl-certificates create producer-service-cert \
--certificate=<your-producer-certfile.cert> \
--private-key=<your-producer-keyfile.pem> \
--region=$region
8. Regionalen internen Application Load Balancer erstellen
Als Nächstes erstellen wir die Load Balancer-Komponenten für den Dienst. Wir verwenden den internen regionalen Application Load Balancer, Sie können aber auch einen beliebigen internen Load Balancer von Google Cloud verwenden. Folgen Sie der entsprechenden Load-Balancer-Dokumentation für die TLS-Verarbeitung.
Erstellen Sie die interne IP-Adresse, die für die Weiterleitungsregel Ihres Load-Balancers verwendet wird, und notieren Sie sich die IP-Adresse, die später verwendet werden soll, wenn Sie einen Testanruf an den Dienst tätigen.
Über Cloud Shell
gcloud compute addresses create apache-service-ip \ --region=$region \ --subnet=service-subnet gcloud compute addresses describe apache-service-ip \ --format="get(address)" \ --region=$region
Erstellen Sie die Systemdiagnose für den Load Balancer.
Über Cloud Shell
gcloud compute health-checks create https lb-apache-service-hc \
--region=$region \
--port-name=https
Erstellen Sie den Back-End-Dienst.
Über Cloud Shell
gcloud compute backend-services create apache-bes\ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTPS \ --port-name=https \ --health-checks=lb-apache-service-hc \ --health-checks-region=$region \ --region=$region gcloud compute backend-services add-backend apache-bes \ --balancing-mode=UTILIZATION \ --instance-group=psc-service-mig \ --region=$region
Erstellen Sie die URL-Zuordnung.
Über Cloud Shell
gcloud compute url-maps create producer-url-map \ --default-service=apache-bes \ --region=$region
Erstellen Sie die Ziel-HTTPS-Proxys.
Über Cloud Shell
gcloud compute target-https-proxies create https-proxy \ --url-map=producer-url-map \ --region=$region \ --ssl-certificates=producer-service-cert
Erstellen Sie die Weiterleitungsregel.
Über Cloud Shell
gcloud compute forwarding-rules create apache-fr \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=producer-vpc \ --subnet=service-subnet \ --address=apache-service-ip \ --ports=443 \ --region=$region \ --target-https-proxy=https-proxy \ --target-https-proxy-region=$region \ --allow-global-access
9. Test-VM erstellen und Dienst lokal testen
Bevor wir den Dienstanhang erstellen, erstellen wir eine Testclient-VM in einer anderen Region, um zu prüfen, ob der Load Balancer mit globalem Zugriff und TLS richtig konfiguriert ist.
Über Cloud Shell
gcloud compute instances create vm-client \
--zone=us-east4-a \
--subnet=test-client-subnet \
--no-address
Warten Sie etwa eine Minute, bis die Bereitstellung abgeschlossen ist, und stellen Sie dann eine SSH-Verbindung zur Instanz her.
Über Cloud Shell
gcloud compute ssh \
--zone "us-east4-a" "vm-client" \
--tunnel-through-iap \
--project $project
Testen Sie den Apache-Dienst, indem Sie über Port 443 eine Verbindung über den Load Balancer herstellen. Die interne IP-Adresse ist die, die Sie zuvor reserviert und notiert haben.
curl https://example.com:443 -k --connect-to example.com:443:<YOUR-INTERNAL-IP>:443
ERWARTETES ERGEBNIS
PSC Service
Beenden Sie die VM.
Von vm-client
exit
10. Dienstanhang erstellen
In diesem Beispiel konfigurieren wir unseren Dienstanhang so, dass nur PSC-Verbindungen aus diesem Projekt zugelassen werden. Sie können so konfiguriert werden, dass sie ein oder mehrere bestimmte Projekte oder Netzwerke akzeptieren, aber nicht beides. Wir haben unser maximales Verbindungslimit auf 5 Verbindungen festgelegt. Für jedes Projekt oder Netzwerk muss ein Limit festgelegt sein.
Über Cloud Shell
gcloud compute service-attachments create apache-service-attachment \
--region=$region \
--producer-forwarding-rule=apache-fr \
--connection-preference=ACCEPT_MANUAL \
--consumer-accept-list=$project=5 \
--nat-subnets=psc-nat-subnet
Notieren Sie sich die URI der Dienstanhänge (selfLink), da Sie sie im nächsten Schritt für die PSC-Backend-Konfiguration benötigen. Sie können sie abrufen, indem Sie Folgendes in Cloud Shell ausführen.
Über Cloud Shell
gcloud compute service-attachments describe apache-service-attachment \
--region $region
Kopieren Sie den URI ab projects.
Beispiel:projects/$project/regions/$region/serviceAttachments/apache-service-attachment
11. Nutzer-VPC einrichten
VPC-Netzwerk erstellen
Über Cloud Shell
gcloud compute networks create consumer-vpc --subnet-mode custom
Subnetz erstellen
Auf der Consumer-Seite ist ein Subnetz erforderlich, in dem die Private Service Connect-Netzwerk-Endpunktgruppe (NEG) bereitgestellt wird.
Über Cloud Shell
gcloud compute networks subnets create consumer-subnet \
--network=consumer-vpc \
--region=$region \
--range=10.0.0.0/28
12. Externe IP-Adresse reservieren und selbst signiertes Zertifikat auf der Verbraucherseite erstellen
Externe IP-Adresse
Erstellen Sie die externe statische IP-Adresse, die später für die Weiterleitungsregel des Load-Balancers verwendet wird, und erfassen Sie die IP-Adresse in einer Cloud Shell-Variablen.
Über Cloud Shell
gcloud compute addresses create external-psc-ip \
--network-tier=PREMIUM \
--ip-version=IPV4 \
--global
export externalip=$(gcloud compute addresses describe external-psc-ip \
--format="get(address)" \
--global)
echo $externalip
Selbst signiertes Consumer-Zertifikat
Führen Sie Schritt 1 der Anleitung hier noch einmal aus, um ein selbst signiertes Zertifikat zu erstellen. Sie können alle Befehle in Cloud Shell ausführen. Kehren Sie hierher zurück, wenn Sie Schritt 1 abgeschlossen haben. Wir verwenden einen öffentlichen Open-Source-Platzhalter-DNS-Dienst namens nip.io anstelle einer eigenen öffentlichen DNS-Zone. Für die öffentliche URL Ihres PSC-Dienstes wird die externe IP-Adresse verwendet, die Sie gerade konfiguriert haben. IHR ALLGEMEINER NAME MUSS MIT <YOUR-EXTERNAL-IP.nip.io> KONFIGURIERT WERDEN.
Erstellen Sie eine Zertifikatsressource, die Sie Ihrem externen Load-Balancer zuordnen. Ersetzen Sie die Parameter für das Zertifikat und den privaten Schlüssel durch Ihre spezifischen Dateinamen.
Über Cloud Shell
gcloud compute ssl-certificates create consumer-service-cert \
--certificate=<your-consumer-certfile.cert> \
--private-key=<your-consumer-keyfile.pem> \
--global
13. Load-Balancer-Komponenten erstellen
Wir erstellen einen globalen externen Application Load Balancer mit einem PSC-NEG, das als Backend-Dienst auf unsere neu erstellte Service Attachment verweist.
Halten Sie den URI des Dienstanhangs bereit, den wir im letzten Schritt notiert haben. Ersetzen Sie „psc-target-service“ unten durch Ihren URI.
Über Cloud Shell
gcloud compute network-endpoint-groups create apache-psc-neg \ --network-endpoint-type=private-service-connect \ --psc-target-service=projects/$project/regions/$region/serviceAttachments/apache-service-attachment \ --region=$region \ --network=consumer-vpc \ --subnet=consumer-subnet
Erstellen Sie den Back-End-Dienst.
Über Cloud Shell
gcloud compute backend-services create apache-pscneg-bes \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=HTTPS \
--global
gcloud compute backend-services add-backend apache-pscneg-bes \
--network-endpoint-group=apache-psc-neg \
--network-endpoint-group-region=$region \
--global
URL-Zuordnung erstellen
Über Cloud Shell
gcloud compute url-maps create consumer-url-map \
--default-service=apache-pscneg-bes \
--global
Erstellen Sie die Ziel-HTTPS-Proxys.
Über Cloud Shell
gcloud compute target-https-proxies create psc-https-proxy \
--url-map=consumer-url-map \
--ssl-certificates=consumer-service-cert
Weiterleitungsregel erstellen
Über Cloud Shell
gcloud compute forwarding-rules create external-fr \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=external-psc-ip \ --global \ --target-https-proxy=psc-https-proxy \ --ports=443
14. Öffentliche DNS-Zone erstellen
Über Cloud Shell
gcloud dns managed-zones create "psc-service" \
--dns-name=$externalip.nip.io. \
--description="public dns for psc service" \
--visibility=public
Über Cloud Shell
gcloud dns record-sets transaction start \ --zone="psc-service" gcloud dns record-sets transaction add $externalip \ --name=$externalip.nip.io \ --ttl=300 \ --type=A \ --zone="psc-service" gcloud dns record-sets transaction execute \ --zone="psc-service"
15. Verbindung zum Consumer PSC testen
Warten Sie 7 bis 10 Minuten, bevor Sie den Test durchführen, damit sich die öffentlichen DNS-Server aktualisieren können.
Über Cloud Shell
curl https://$externalip.nip.io -k
Sie können auch über Ihren Browser testen, indem Sie https://<YOUR-EXTERNAL-IP>.nip.io in Ihren Browser oder Ihr Desktop-Terminal eingeben.
ERWARTETES ERGEBNIS
PSC Service
16. Bereinigungsschritte
Lab-Komponenten über ein einzelnes Cloud Shell-Terminal löschen
gcloud dns record-sets delete $externalip.nip.io --zone="psc-service" --type=A -q gcloud dns managed-zones delete "psc-service" -q gcloud compute forwarding-rules delete external-fr --global -q gcloud compute target-https-proxies delete psc-https-proxy -q gcloud compute url-maps delete consumer-url-map --global -q gcloud compute backend-services delete apache-pscneg-bes --global -q gcloud compute network-endpoint-groups delete apache-psc-neg --region=$region -q gcloud compute ssl-certificates delete consumer-service-cert --global -q gcloud compute addresses delete external-psc-ip --global -q gcloud compute networks subnets delete consumer-subnet --region $region -q gcloud compute networks delete consumer-vpc -q gcloud compute instances delete vm-client --zone=us-east4-a -q gcloud compute service-attachments delete apache-service-attachment --region $region -q gcloud compute forwarding-rules delete apache-fr --region $region -q gcloud compute target-https-proxies delete https-proxy --region $region -q gcloud compute url-maps delete producer-url-map --region $region -q gcloud compute backend-services delete apache-bes --region $region -q gcloud compute health-checks delete lb-apache-service-hc --region $region -q gcloud compute addresses delete apache-service-ip --region $region -q gcloud compute ssl-certificates delete producer-service-cert --region $region -q gcloud compute instance-groups managed delete psc-service-mig --region $region -q gcloud compute health-checks delete service-mig-healthcheck --global -q gcloud compute instance-templates delete apache-service-template -q gcloud compute network-firewall-policies rules delete 2001 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy --name=network-producer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete producer-vpc-policy --global -q gcloud compute routers nats delete central-nat --router=central-cr --region $region -q gcloud compute routers delete central-cr --region $region -q gcloud compute networks subnets delete psc-nat-subnet --region $region -q gcloud compute networks subnets delete service-subnet --region $region -q gcloud compute networks subnets delete test-client-subnet --region us-east4 -q gcloud compute networks subnets delete central-proxy-subnet --region $region -q gcloud compute networks delete producer-vpc -q
17. Glückwunsch!
Herzlichen Glückwunsch zum Abschluss des Codelabs.
Behandelte Themen
- PSC-Backend erstellen und konfigurieren, das dem globalen externen Application Load Balancer zugeordnet ist
- Verwalteten Apache-Webdienst konfigurieren und als PSC-Dienst über einen Dienstanhang bereitstellen
- SSL-Zertifikate erstellen, um SSL auf internen und externen Application Load Balancern zu beenden
- Öffentliche Cloud DNS-Zone für den Zugriff auf den PSC-Dienst konfigurieren