Standardmäßig stellt ein Cloud Run-Dienst über einen dynamischen IP-Adresspool eine Verbindung zu externen Endpunkten im Internet her. Wenn der Cloud Run-Dienst eine Verbindung zu einem externen Endpunkt herstellt, der eine statische IP-Adresse erfordert, z. B. eine Datenbank oder API mit einer IP-Adressen-basierten Firewall, müssen Sie Ihren Cloud Run-Dienst so konfigurieren, dass Anfragen über eine statische IP-Adresse weitergeleitet werden.
Auf dieser Seite wird beschrieben, wie Sie einen Cloud Run-Dienst aktivieren, um Anfragen mithilfe einer statischen IP-Adresse zu senden.
Wir empfehlen, Cloud Run so zu konfigurieren, dass Traffic über ausgehenden Direct VPC-Traffic an ein VPC-Netzwerk gesendet wird. Sie haben jedoch die Möglichkeit, einen Connector zu erstellen.
Aufgabenübersicht
Damit ein Cloud Run-Dienst Anfragen mithilfe einer statischen IP-Adresse weiterleiten kann, müssen Sie den ausgehenden VPC-Traffic des Cloud Run-Dienstes so konfigurieren, dass der gesamte ausgehende Traffic über ein VPC-Netzwerk mit einem konfigurierten Cloud NAT-Gateway mit der statischen IP-Adresse weitergeleitet wird.
In dieser Anleitung konfigurieren Sie Cloud NAT im manuellen Modus und weisen ihr eine einzelne statische IP-Adresse zu. Wenn Ihre Cloud Run-Arbeitslasten auf eine große Anzahl skaliert werden, müssen Sie Cloud NAT möglicherweise mehrere statische IP-Adressen zuweisen. Weitere Informationen
Wenn Sie den Traffic über Cloud NAT weiterleiten, wird kein zusätzlicher Hop im Netzwerk-Stack verursacht, da das Cloud NAT-Gateway und der Cloud Router nur eine Steuerungsebene bieten und die Pakete nicht durch das NAT-Gateway oder den Cloud Router weitergeleitet werden.
Network Address Translation (NAT) konfigurieren
Wenn Sie ausgehenden Direct VPC-Traffic oder einen Connector für serverlosen VPC-Zugriff verwenden, kommen Anfragen Ihres Cloud Run-Dienstes in Ihrem VPC-Netzwerk an. Wenn Sie ausgehende Anfragen an externe Endpunkte mithilfe einer statischen IP-Adresse weiterleiten möchten, konfigurieren Sie ein Cloud NAT-Gateway.
gcloud
Erstellen Sie einen neuen Cloud Router, um ein Cloud NAT-Gateway zu programmieren:
gcloud compute routers create ROUTER_NAME \ --network=NETWORK_NAME \ --region=REGION
Ersetzen Sie Folgendes:
ROUTER_NAME
: Ein Name für die Cloud Router-Ressource, die Sie erstellen möchten.NETWORK_NAME
: der Name des VPC-Netzwerk, das Sie zuvor ermittelt haben.REGION
: die Region, in der Sie ein Cloud NAT-Gateway erstellen möchten.
Reservieren Sie eine statische IP-Adresse. Eine reservierte IP-Adressressource behält die zugrunde liegende IP-Adresse bei, wenn die ihr zugeordnete Ressource gelöscht und neu erstellt wird:
gcloud compute addresses create ORIGIN_IP_NAME --region=REGION
Ersetzen Sie Folgendes:
ORIGIN_IP_NAME
: der Name, den Sie der IP-Adressressource zuweisen möchten.REGION
: die Region, in der der Cloud NAT-Router ausgeführt wird. Verwenden Sie dieselbe Region wie der Cloud Run-Dienst, um Latenz und Netzwerkkosten zu minimieren.
Erstellen Sie eine Cloud NAT-Gateway-Konfiguration auf diesem Router, um den Traffic, der vom VPC-Netzwerk stammt, mithilfe der von Ihnen erstellten statischen IP-Adresse weiterzuleiten:
gcloud compute routers nats create NAT_NAME \ --router=ROUTER_NAME \ --region=REGION \ --nat-custom-subnet-ip-ranges=SUBNET_NAME \ --nat-external-ip-pool=ORIGIN_IP_NAME
Ersetzen Sie Folgendes:
NAT_NAME
: Ein Name für die Cloud NAT-Gateway-Ressource, die Sie erstellen möchten.ROUTER_NAME
: Der Name Ihres Cloud Router.REGION
: die Region, in der Sie ein Cloud NAT-Gateway erstellen möchten.SUBNET_NAME
: Der Name Ihres Subnetzes.ORIGIN_IP_NAME
: der Name der reservierten IP‑Adressenressource, die Sie im vorherigen Schritt erstellt haben.
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Erstellen Sie einen neuen Cloud Router, um ein Cloud NAT-Gateway zu programmieren:
Ersetzen Sie
cr-static-ip-router
durch Ihren Subnetznamen.Reservieren Sie eine statische IP-Adresse. Eine reservierte IP-Adressressource behält die zugrunde liegende IP-Adresse bei, wenn die ihr zugeordnete Ressource gelöscht und neu erstellt wird:
Ersetzen Sie
cr-static-ip-addr
durch Ihren Subnetznamen.Erstellen Sie eine Cloud NAT-Gateway-Konfiguration auf diesem Router, um den Traffic, der vom VPC-Netzwerk stammt, mithilfe der von Ihnen erstellten statischen IP-Adresse weiterzuleiten:
Ersetzen Sie
cr-static-nat
durch den Namen des Cloud NAT-Gateways.
Cloud Run-Traffic über das VPC-Netzwerk weiterleiten
Nachdem Cloud NAT konfiguriert wurde, stellen Sie Ihren Cloud Run-Dienst mit ausgehendem Direct VPC-Traffic oder dem Connector für serverlosen VPC-Zugriff bereit oder aktualisieren Sie ihn und stellen Sie den ausgehenden VPC-Traffic so ein, dass er den gesamten Traffic durch das VPC-Netzwerk leitet:
gcloud
Ausgehender Direct VPC-Traffic
Führen Sie den folgenden Befehl aus, um Ihren Cloud Run-Dienst so bereitzustellen oder zu aktualisieren, dass er ausgehenden Direct VPC-Traffic verwendet und den gesamten ausgehenden Traffic über diesen weiterleitet:
gcloud run deploy SERVICE_NAME
--image=IMAGE_URL
--network=NETWORK
--subnet=SUBNET
--region=REGION
--vpc-egress=all-traffic
Ersetzen Sie Folgendes:
- SERVICE_NAME: der Name des Cloud Run-Dienstes, den Sie bereitstellen möchten.
- IMAGE_URL: ein Verweis auf das Container-Image, z. B.
us-docker.pkg.dev/cloudrun/container/hello:latest
Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat das FormatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - NETWORK ist der Name des VPC-Netzwerks.
- SUBNET: Der Name Ihres Subnetzes.
- REGION: Eine Region für Ihren Dienst.
Connector für serverlosen VPC-Zugriff
Führen Sie den folgenden Befehl aus, um Ihren Cloud Run-Dienst bereitzustellen oder zu aktualisieren, damit er einen Connector für serverlosen VPC-Zugriff verwendet und den gesamten ausgehenden Traffic über ihn weiterleitet:
gcloud run deploy SERVICE_NAME
--image=IMAGE_URL
--vpc-connector=CONNECTOR_NAME
--region=REGION
--vpc-egress=all-traffic
Ersetzen Sie Folgendes:
- SERVICE_NAME: der Name des Cloud Run-Dienstes, den Sie bereitstellen möchten.
- IMAGE_URL: ein Verweis auf das Container-Image, z. B.
us-docker.pkg.dev/cloudrun/container/hello:latest
Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat das FormatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - CONNECTOR_NAME: der Name Ihres Connectors für Serverloser VPC-Zugriff.
- REGION: Eine Region für Ihren Dienst.
YAML
Ausgehender Direct VPC-Traffic
Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:
gcloud run services describe SERVICE --format export > service.yaml
Nehmen Sie die erforderlichen Änderungen vor.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]' run.googleapis.com/vpc-access-egress: all-traffic spec: containers: - image: IMAGE_URL
Ersetzen Sie Folgendes:
- SERVICE: Der Name des Cloud Run-Dienstes.
- NETWORK ist der Name des VPC-Netzwerks.
- SUBNET: Der Name Ihres Subnetzes.
- IMAGE_URL: die URL Ihres Dienstcontainer-Images.
Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:
gcloud run services replace service.yaml
Connector für serverlosen VPC-Zugriff
Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:
gcloud run services describe SERVICE --format export > service.yaml
Nehmen Sie die erforderlichen Änderungen vor.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/vpc-access-connector: CONNECTOR_NAME spec: containers: - image: IMAGE_URL
Ersetzen Sie Folgendes:
- SERVICE: Der Name des Cloud Run-Dienstes.
- CONNECTOR_NAME: der Name des Serverless VPC Access-Netzwerks.
- IMAGE_URL: ein Verweis auf das Container-Image, z. B.
us-docker.pkg.dev/cloudrun/container/hello:latest
Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat das FormatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:
gcloud run services replace service.yaml
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Dieser Cloud Run-Dienst verwendet einen VPC-Connector und leitet den gesamten ausgehenden Traffic über ihn weiter:
Ersetzen Sie us-docker.pkg.dev/cloudrun/container/hello
durch einen Verweis auf Ihr Container-Image.
Statische externe IP-Adresse prüfen
Nachdem Sie die oben genannten Schritte ausgeführt haben, haben Sie Cloud NAT in Ihrem VPC-Netzwerk mit einer vordefinierten statischen IP-Adresse eingerichtet und den gesamten ausgehenden Traffic Ihres Cloud Run-Dienstes an Ihr VPC-Netzwerk weitergeleitet. Anfragen Ihres Cloud Run-Dienstes werden durch Ihr VPC-Netzwerk geleitet und erreichen externe Endpunkte über die statische IP-Adresse.
Um dieses Verhalten zu bestätigen und die ursprüngliche IP-Adresse zu prüfen, die Ihr Dienst verwendet, können Sie eine Anfrage an eine API oder eine Website wie curlmyip.org senden, die die ursprüngliche IP-Adresse anzeigt.
Statische externe IP-Adresse löschen
Wenn Sie eine statische externe IP-Adresse nicht mehr benötigen, lesen Sie den Artikel Statische externe IP-Adresse freigeben.