Ausgehender Direct VPC-Traffic mit einem freigegebenen VPC-Netzwerk

Sie können Ihren Cloud Run-Dienst oder -Job aktivieren, um Traffic an ein freigegebenes VPC-Netzwerk zu senden. Verwenden Sie dazu ausgehenden Direct VPC-Traffic; dabei ist kein Connector für serverlosen VPC-Zugriff erforderlich.

Auf dieser Seite wird beschrieben, wie Sie die IAM-Berechtigungen von Cloud Run konfigurieren, um das Subnetz des freigegebene VPC-Netzwerks zu verwenden. Darauf können Sie Ihren Dienst oder Job im freigegebenen Subnetz platzieren.

Hinweise

Beschränkungen

Die folgenden Einschränkungen gelten für Cloud Run-Dienste, -Jobs und -Worker-Pools:

  • Wenn Sie ausgehenden Direct VPC-Traffic verwenden, kann es beim Starten der Instanz zu Verzögerungen beim Herstellen der Verbindung von einer Minute oder länger kommen. Wir empfehlen, eine HTTP-Startprüfung zu konfigurieren, die eine Verbindung zu einem von der Anwendung verwendeten Ausgangsziel testet, bevor die Anwendung Anfragen akzeptiert. Für diesen Test der ausgehenden Verbindung sollten entweder Wiederholungsversuche implementiert werden oder die Startprüfung sollte mit geeigneten Konfigurationen für Zeitraum und Grenzwert festgelegt werden, um als Wiederholungsversuch zu fungieren.
  • Cloud Run unterstützt einen Durchsatz von bis zu 1 Gbit/s pro Instanz. Das Überschreiten dieses Betrags führt zu einer Leistungsdrosselung.
  • Ein Cloud Run-Nutzungskontingent begrenzt die maximale Anzahl von Instanzen, die Sie für die Verwendung von Direct VPC-Egress konfigurieren können. Die maximale Anzahl wird pro Cloud Run-Revision oder Jobausführung konfiguriert. Informationen zum Erhöhen der Standardlimits finden Sie hier.

  • Bei Cloud Run-Diensten, ‑Jobs und ‑Worker-Pools kann es während der Wartung der Netzwerkinfrastruktur zu Verbindungsunterbrechungen kommen. Wir empfehlen die Verwendung von Clientbibliotheken, bei denen gelegentlich Verbindungen zurückgesetzt werden können ohne dass es Probleme gibt.
  • Die Unterstützung für direkten VPC-Ausgang für internen IPv6-Traffic ist nur in der Vorschau verfügbar.
  • Privates NAT ist nur in der Vorschau verfügbar.

Die folgenden Elemente werden vom ausgehendem Direct VPC-Traffic nicht unterstützt:

  • VPC-Flusslogs geben nicht den Namen des Cloud Run-Dienstes oder der Cloud Run-Überarbeitung an.
  • VPC-Flusslogs werden nicht von Nicht-VM-Ressourcen wie Cloud Run oder lokalen Maschinen gemeldet.
  • Paketspiegelung
  • Network Intelligence Center, einschließlich Konnektivitätstests
  • Externer IPv6-Traffic über ein VPC-Netzwerk
  • Netzwerktags oder Dienstidentität in Firewallregeln für eingehenden Traffic.
  • Firewallregeln können Resource Manager-Tags, die mit Cloud Run-Arbeitslasten verknüpft sind, nicht verwenden.
  • Bei Cloud Run-Jobs, die länger als eine Stunde ausgeführt werden, kann es zu Verbindungsunterbrechungen kommen. Diese können bei Wartungsereignissen auftreten, bei denen der Job von einer Maschine auf eine andere migriert wird. Der Container erhält 10 Sekunden vor dem Ereignis ein SIGTSTP-Signal, Nach dem Ereignis erhält er ein SIGCONT-Signal. Nachdem der Container das SIGCONT-Signal erhalten hat, wiederholen Sie die Verbindung.

IAM-Berechtigungen einrichten

Bevor Cloud Run im Dienstprojekt einer freigegebenen VPC auf ein freigegebenes VPC-Netzwerk zugreifen kann, müssen Sie prüfen, ob der Cloud Run-Dienst-Agent ausreichende Berechtigungen zur Verwendung des Subnetzes hat.

  1. Um auf das freigegebene VPC-Netzwerk zuzugreifen,müssen Sie dem Cloud Run-Dienst-Agent ausreichende Berechtigungen erteilen. Dazu fügen Sie eine der folgenden Rollen hinzu:

    • Netzwerknutzer (compute.networkUser) für das freigegebene VPC-Hostprojekt.

      Führen Sie dazu beispielsweise den folgenden Befehl aus:

      gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
      --member "serviceAccount:service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com" \
      --role "roles/compute.networkUser"

      Ersetzen Sie Folgendes:

      • HOST_PROJECT_ID: Die ID Ihres freigegebenen VPC-Hostprojekts.
      • SERVICE_PROJECT_NUMBER: Die Projektnummer der freigegebenen VPC-Dienstes, in dem Sie den Cloud Run-Dienst oder -Job bereitstellen.
    • Compute Network Viewer (compute.networkViewer) für das Hostprojekt mit freigegebene VPC und die Rolle Compute Network User (compute.networkUser) für das Subnetz mit freigegebene VPC.

      Beispiel: Führen Sie folgenden Befehl aus, um die Rolle „Compute-Netzwerknutzer“ im Subnetz zuzuweisen:

      gcloud compute networks subnets add-iam-policy-binding SUBNET_NAME \
        --region REGION \
        --member "serviceAccount:service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com" \
        --role "roles/compute.networkUser" \
        --project HOST_PROJECT_ID

      Ersetzen Sie Folgendes:

      • SUBNET_NAME: der voll qualifizierte Ressourcenname des Subnetzes, in dem Sie Ihre Cloud Run-Dienste ausführen möchten.
      • REGION durch die Region für Ihren Cloud Run-Dienst; diese muss der Region Ihres Subnetzes entsprechen.
      • SERVICE_PROJECT_NUMBER: Die Projektnummer der freigegebenen VPC-Dienstes, in dem Sie den Cloud Run-Dienst oder -Job bereitstellen.
      • HOST_PROJECT_ID: Die ID Ihres freigegebenen VPC-Hostprojekts.
  2. Der Cloud Run-Dienst-Agent benötigt die Rolle Cloud Run Service Agent für Ihr Cloud Run-Projekt. Mit folgendem Befehl können Sie prüfen, ob die Rolle manuell entfernt wurde:

    gcloud projects get-iam-policy SERVICE_PROJECT_ID \
      --flatten bindings \
      --filter "bindings.role:roles/run.serviceAgent"

    Ersetzen Sie SERVICE_PROJECT_ID durch die Projekt-ID Ihres Cloud Run-Dienstes oder -Jobs.

Für eine genauere Kontrolle muss der Cloud Run-Dienst-Agent folgende Berechtigungen haben:

  • compute.networks.get im freigegebene VPC-Hostprojekt
  • compute.subnetworks.get für das Hostprojekt oder das spezifische Subnetz
  • compute.subnetworks.use für das Hostprojekt oder das spezifische Subnetz
  • compute.addresses.get im Dienstprojekt mit freigegebener VPC
  • compute.addresses.list im Dienstprojekt mit freigegebener VPC
  • compute.addresses.createInternal im Dienstprojekt mit freigegebener VPC
  • compute.addresses.deleteInternal im Dienstprojekt mit freigegebener VPC
  • compute.regionOperations.get im Dienstprojekt mit freigegebener VPC

Zuweisung von IP-Adressen

Wenn Sie Ihren Cloud Run-Dienst, -Job oder -Worker-Pool in einem VPC-Netzwerk platzieren möchten, geben Sie entweder ein VPC-Netzwerk oder ein Subnetz oder beides an. Wenn Sie nur ein Netzwerk angeben, hat das Subnetz denselben Namen wie das Netzwerk. Cloud Run weist IP-Adressen aus Ihrem Subnetz zu.

IP-Adressen sind sitzungsspezifisch. Erstellen Sie also keine Richtlinien, die auf einzelnen IP-Adressen basieren. Wenn Sie eine Richtlinie anhand von IP-Adressen erstellen müssen, z. B. in Firewallregeln, müssen Sie den IP-Adressbereich des gesamten Subnetzes verwenden.

Wenn Sie das von Ihrem Dienst, Job oder Worker-Pool verwendete Netzwerk oder Subnetz ändern möchten, stellen Sie eine neue Überarbeitung bereit oder führen Sie eine neue Jobaufgabe aus, die die neuen Netzwerk- und Subnetzwerte verwendet.

Hoch- und herunterskalieren

Damit bei einem Trafficanstieg schnell eine vertikale Skalierung möglich ist, reserviert Cloud Run IP-Adressen in Blöcken von 16 (28-Subnetzmaske). Sehen Sie nach, welche IP-Adressen Cloud Run zugewiesen hat. Damit Sie genügend IPv4-Adressen für die Verwendung in Cloud Run haben, muss der IPv4-Adressbereich Ihres Subnetzes mindestens /26 sein.

Für eine effiziente IP-Zuweisung und einfachere Verwaltung platzieren Sie mehrere Ressourcen im selben Subnetz. Wenn Ihr IPv4-Adressbereich begrenzt ist, finden Sie weitere Optionen unter Unterstützte IPv4-Bereiche.

Wenn Sie das Subnetz löschen möchten, müssen Sie zuerst Ihre Cloud Run-Dienste, -Jobs oder -Worker-Pools löschen oder noch einmal bereitstellen, um das Subnetz nicht mehr zu verwenden. Warten Sie dann 1–2 Stunden.

IP-Adressenverbrauch für Dienste und Worker-Pools

Im stabilen Zustand verwendet Cloud Run doppelt so viele IP-Adressen wie die Anzahl der Instanzen. Wenn eine Revision herunterskaliert wird, behält Cloud Run ihre IP-Adressen bis zu 20 Minuten lang bei. Reservieren Sie insgesamt mindestens das Doppelte der Anzahl der IP-Adressen plus einen Puffer für Überarbeitungen.

Wenn Sie beispielsweise die Überarbeitungen so aktualisieren, dass revision 1 von 100 Instanzen auf null skaliert wird, während revision 2 von null auf 100 skaliert wird, behält Cloud Run die revision 1-IP-Adressen für bis zu 20 Minuten nach dem Herunterskalieren bei. Während des 20-minütigen Aufbewahrungszeitraums müssen Sie mindestens 400 IP-Adressen ((100 + 100) * 2) reservieren.

IP-Nutzung für Jobs

Bei Cloud Run-Jobs belegt jede Aufgabe für die Dauer ihrer Ausführung plus 7 Minuten nach Abschluss eine IP-Adresse. Achten Sie darauf, dass Ihr Subnetz groß genug ist, um alle gleichzeitigen Ausführungen von Job-Tasks zu ermöglichen. Es ist ein Subnetz mit einer Mindestreservierung von /26 erforderlich.

Beispiel:

  • Ein Job mit einer einzelnen Aufgabe, der täglich ausgeführt wird und immer mindestens 7 Minuten vor der nächsten Ausführung abgeschlossen wird, belegt maximal eine IP-Adresse im Subnetz.
  • Ein Job mit 10 Aufgaben, der alle 10 Minuten ausgeführt wird und bei dem jede Aufgabe 15 Minuten lang ausgeführt wird, verbraucht 22 Minuten lang 1 IP-Adresse pro Aufgabe (bei 3 Ausführungen werden IP-Adressen gleichzeitig verwendet), wie im folgenden Beispiel gezeigt. Für den Job werden daher im stabilen Zustand 30 IP-Adressen benötigt.
  • Für einen Job mit einer einzelnen Aufgabe, der 1 Minute dauert und 100-mal pro Minute ausgeführt wird, sind je nach genauer Ausführungszeit etwa 800 IP-Adressen erforderlich.

Unterstützte IPv4-Bereiche

Cloud Run unterstützt die folgenden IPv4-Bereiche für Ihr Subnetz:

  • RFC 1918
    • 10.0.0.0/8
    • 172.16.0.0/12
    • 192.168.0.0/16
  • RFC 6598
    • 100.64.0.0/10
  • Klasse E
    • 240.0.0.0/4

Service bereitstellen

Durch ausgehenden Direct VPC-Traffic kann Ihr Cloud Run-Dienst Traffic ohne Connector für serverlosen VPC-Zugriff an ein freigegebenes VPC-Netzwerk senden. Die Netzwerkkosten werden wie der Dienst selbst auf null skaliert. Sie können Netzwerk-Tags auch direkt zu Cloud Run-Dienstüberarbeitungen hinzufügen, um eine detailliertere Netzwerksicherheit zu erhalten, z. B. durch Anwenden von VPC-Firewallregeln.

Sie können ausgehenden Direct VPC-Traffic mit einem Dienst über dieGoogle Cloud Console, die Google Cloud CLI oder YAML konfigurieren.

Konsole

  1. Rufen Sie in der Google Cloud Console die Seite „Cloud Run“ auf:

    Zu Cloud Run

  2. Wählen Sie im Menü Dienste aus und klicken Sie auf Container bereitstellen, um einen neuen Dienst zu konfigurieren. Wenn Sie einen vorhandenen Dienst konfigurieren und bereitstellen, klicken Sie auf den Dienst und dann auf Neue Überarbeitung bearbeiten und bereitstellen.

  3. Wenn Sie einen neuen Dienst konfigurieren, füllen Sie die Seite mit den anfänglichen Diensteinstellungen wie gewünscht aus und klicken Sie dann auf Container, Volumes, Netzwerk, Sicherheit, um die Seite zur Dienstkonfiguration zu maximieren.

  4. Klicken Sie auf den Tab Netzwerk.

  5. Klicken Sie auf Mit einer VPC für ausgehenden Traffic verbinden.

  6. Klicken Sie auf Traffic direkt an eine VPC senden.

  7. Wählen Sie Für mich freigegebene Netzwerke aus.

  8. Wählen Sie im Feld Netzwerk das freigegebene VPC-Netzwerk aus, an das Sie Traffic senden möchten.

  9. Wählen Sie im Feld Subnetz das Subnetz aus, von dem Ihr Dienst IP-Adressen empfängt.

  10. Optional: Geben Sie die Namen der Netzwerk-Tags ein, die Sie Ihrem Dienst oder Ihren Diensten zuordnen möchten. Netzwerktags werden auf Versionsebene angegeben. Jede Dienstversion kann unterschiedliche Netzwerk-Tags haben, z. B. network-tag-2.

  11. Wählen Sie für Traffic-Routing eine der folgenden Optionen:

    • Nur Anfragen an private IPs an die VPC weiterleiten, um nur Traffic an interne Adressen über das freigegebene VPC-Netzwerk zu senden.
    • Gesamten Traffic an die VPC weiterleiten, um den gesamten ausgehenden Traffic über das VPC-Netzwerk zu senden.
  12. Klicken Sie auf Erstellen oder Bereitstellen.

  13. Klicken Sie auf den Dienst und dann auf den Tab Netzwerk, um zu prüfen, ob sich der Dienst in Ihrem freigegebenen VPC-Netzwerk befindet. Netzwerk und Subnetz werden auf der VPC-Karte aufgeführt.

Sie können nun Anfragen von Ihrem Cloud Run-Dienst an eine beliebige Ressource im freigegebenen VPC-Netzwerk senden, je nach Ihren Firewallregeln.

gcloud

Geben Sie zum Platzieren Ihres Dienstes im freigegebenen Subnetz die vollständig qualifizierten Ressourcennamen für das freigegebene VPC-Netzwerk und das Subnetz über folgenden Befehl an:

gcloud run deploy SERVICE_NAME \
  --image IMAGE_URL \
  --network projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK \
  --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \
  --network-tags NETWORK_TAG_NAMES \
  --vpc-egress=EGRESS_SETTING \
  --region REGION \
  --max-instances MAX
  

Ersetzen Sie Folgendes:

  • SERVICE_NAME: Der Name Ihres Cloud Run-Dienstes.
  • IMAGE_URL: Die Image-URL des Dienstes.
  • HOST_PROJECT_ID: Die ID Ihres freigegebenen VPC-Projekts.
  • VPC_NETWORK: der voll qualifizierte Ressourcenname des freigegebenen VPC-Netzwerks.
  • REGION durch die Region für Ihren Cloud Run-Dienst; diese muss der Region Ihres Subnetzes entsprechen.
  • SUBNET_NAME: der voll qualifizierte Ressourcenname Ihres Subnetzes.
  • Optional: NETWORK_TAG_NAMES durch die durch Kommas getrennten Namen der Netzwerk-Tags ersetzen, die Sie mit einem Dienst verknüpfen möchten. Bei Diensten werden Netzwerk-Tags auf Versionsebene angegeben. Jede Dienstversion kann unterschiedliche Netzwerk-Tags haben, z. B. network-tag-2.
  • EGRESS_SETTING durch einen Wert für die Einstellung für ausgehenden Traffic:
    • all-traffic: Sendet den gesamten ausgehenden Traffic über das freigegebene VPC-Netzwerk.
    • private-ranges-only: Sendet nur Traffic an interne Adressen über das freigegebene VPC-Netzwerk.
  • MAX: Die maximale Anzahl an Instanzen, die für das freigegebene VPC-Netzwerk verwendet werden sollen. Die maximale Anzahl von Instanzen für Dienste beträgt 100.

Weitere Informationen und optionale Argumente finden Sie in der gcloud-Referenz.

YAML

  1. 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
  2. Aktualisieren Sie die folgenden Attribute:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE_NAME
      labels:
        cloud.googleapis.com/location: REGION
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
            run.googleapis.com/vpc-access-egress: EGRESS_SETTING
        spec:
          containers:
          - image: IMAGE

    Ersetzen Sie:

    • SERVICE_NAME durch den Namen Ihres Cloud Run-Dienstes. Dienstnamen dürfen maximal 49 Zeichen lang sein und pro Region und Projekt nur einmal vorkommen.
    • REGION durch die Region für Ihren Cloud Run-Dienst; diese muss der Region Ihres Subnetzes entsprechen.
    • NETWORK durch den voll qualifizierten Ressourcennamen Ihres freigegebenen VPC-Netzwerks.
    • SUBNET_NAME durch den voll qualifizierten Ressourcennamen Ihres Subnetzes.
    • Optional: Ersetzen Sie NETWORK_TAG_NAMES durch die Namen der Netzwerk-Tags, die Sie einem Dienst zuordnen möchten. Bei Diensten werden Netzwerk-Tags auf Versionsebene angegeben. Jede Dienstversion kann unterschiedliche Netzwerk-Tags haben, z. B. network-tag-2.
    • EGRESS_SETTING durch einen Wert für die Einstellung für ausgehenden Traffic:
      • all-traffic: Sendet den gesamten ausgehenden Traffic über das freigegebene VPC-Netzwerk.
      • private-ranges-only: Sendet nur Traffic an interne Adressen über das freigegebene VPC-Netzwerk.
    • IMAGE durch die URL Ihres Dienst-Container-Images.
  3. 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.

  1. Fügen Sie der Datei main.tf Folgendes hinzu:

    /**
     * Copyright 2024 Google LLC
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    # Example configuration of a Cloud Run service with direct VPC
    
    resource "google_cloud_run_v2_service" "default" {
      name     = "cloudrun-service"
      location = "us-central1"
    
      deletion_protection = false # set to "true" in production
    
      template {
        containers {
          image = "us-docker.pkg.dev/cloudrun/container/hello"
        }
        vpc_access {
          network_interfaces {
            network    = "default"
            subnetwork = "default"
            tags       = ["tag1", "tag2", "tag3"]
          }
        }
      }
    }
    

Optional: Veröffentlichen Sie Ihren Dienst, wenn Sie den nicht authentifizierten Zugriff auf den Dienst zulassen möchten.

Job erstellen

Durch ausgehenden Direct VPC-Traffic kann Ihr Cloud Run-Job Traffic ohne Connector für serverlosen VPC-Zugriff an ein freigegebenes VPC-Netzwerk senden. Sie können auch Netzwerk-Tags direkt zu Cloud Run-Jobs hinzufügen, um eine detailliertere Netzwerksicherheit zu erhalten, z. B. durch Anwenden von VPC-Firewallregeln.

Sie können ausgehenden Direct VPC-Traffic mit einem Job über dieGoogle Cloud Console, die Google Cloud CLI oder YAML konfigurieren.

Konsole

  1. Rufen Sie in der Google Cloud Console die Seite „Cloud Run“ auf:

    Zu Cloud Run

  2. Wenn Sie einen neuen Job konfigurieren, klicken Sie auf Container bereitstellen und wählen Sie Job aus, um das anfängliche Formular Job erstellen nach Bedarf auszufüllen. Wenn Sie einen vorhandenen Job konfigurieren, klicken Sie auf den Tab Jobs, wählen Sie einen Job aus und klicken Sie dann auf Bearbeiten.

  3. Klicken Sie auf Container, Variablen und Secrets, Verbindungen, Sicherheit, um die Seite mit den Jobattributen zu maximieren.

  4. Klicken Sie auf den Tab Verbindungen.

  5. Klicken Sie auf Mit einer VPC für ausgehenden Traffic verbinden.

  6. Klicken Sie auf Traffic direkt an eine VPC senden.

  7. Wählen Sie Für mich freigegebene Netzwerke aus.

  8. Wählen Sie im Feld Netzwerk das freigegebene VPC-Netzwerk aus, an das Sie Traffic senden möchten.

  9. Wählen Sie im Feld Subnetz das Subnetz aus, von dem Ihr Job IP-Adressen empfängt.

  10. Optional: Geben Sie die Namen der Netzwerk-Tags ein, die Sie einem Job zuordnen möchten. Für Jobs werden Netzwerk-Tags auf Ausführungsebene angegeben. Jede Jobausführung kann unterschiedliche Netzwerk-Tags haben, z. B. network-tag-2.

  11. Wählen Sie für Traffic-Routing eine der folgenden Optionen:

    • Nur Anfragen an private IPs an die VPC weiterleiten, um nur Traffic an interne Adressen über das freigegebene VPC-Netzwerk zu senden.
    • Gesamten Traffic an die VPC weiterleiten, um den gesamten ausgehenden Traffic über das VPC-Netzwerk zu senden.
  12. Klicken Sie auf Erstellen oder Aktualisieren.

  13. Klicken Sie auf den Job und dann auf den Tab Konfiguration, um zu prüfen, ob sich der Job in Ihrem freigegebene VPC-Netzwerk befindet. Netzwerk und Subnetz werden auf der VPC-Karte aufgeführt.

Sie können Ihren Cloud Run-Job jetzt ausführen und Anfragen vom Job an eine beliebige Ressource im freigegebenen VPC-Netzwerk senden, je nach Firewallregeln.

gcloud

Geben Sie zum Platzieren Ihres Jobs im freigegebenen Subnetz die vollständig qualifizierten Ressourcennamen für das freigegebene VPC-Netzwerk und das Subnetz über folgenden Befehl an:

gcloud run jobs create JOB_NAME \
  --image IMAGE_URL \
  --network projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK \
  --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \
  --network-tags NETWORK_TAG_NAMES \
  --vpc-egress=EGRESS_SETTING \
  --region REGION \
  

Ersetzen Sie Folgendes:

  • JOB_NAME: Der Name Ihres Cloud Run-Jobs.
  • IMAGE_URL: Die Image-URL des Jobs.
  • HOST_PROJECT_ID: Die ID des freigegebenen VPC-Hostprojekts.
  • VPC_NETWORK: der voll qualifizierte Ressourcenname des freigegebenen VPC-Netzwerks.
  • REGION: Die Region für Ihren Cloud Run-Job, die der Region des Subnetzes entsprechen muss.
  • SUBNET_NAME: der voll qualifizierte Ressourcenname des Namens Ihres Subnetzes.
  • Optional: NETWORK_TAG_NAMES durch die durch Kommas getrennten Namen der Netzwerk-Tags ersetzen, die Sie mit einem Job verknüpfen möchten. Jede Jobausführung kann unterschiedliche Netzwerk-Tags haben, z. B. network-tag-2.
  • EGRESS_SETTING durch einen Wert für die Einstellung für ausgehenden Traffic:
    • all-traffic: Sendet den gesamten ausgehenden Traffic über das freigegebene VPC-Netzwerk.
    • private-ranges-only: Sendet nur Traffic an interne Adressen über das freigegebene VPC-Netzwerk.

Weitere Informationen und optionale Argumente finden Sie in der gcloud-Referenz.

YAML

  1. Wenn Sie einen neuen Job erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Job aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Aktualisieren Sie die folgenden Attribute:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB_NAME
      annotations:
        run.googleapis.com/launch-stage: BETA
      labels:
        cloud.googleapis.com/location: REGION
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
            run.googleapis.com/vpc-access-egress: EGRESS_SETTING
        spec:
          containers:
          - image: IMAGE

    Ersetzen Sie:

    • JOB_NAME durch den Namen Ihres Cloud Run-Jobs. Jobnamen dürfen maximal 49 Zeichen lang sein und pro Region und Projekt nur einmal vorkommen.
    • REGION durch die Region für Ihren Cloud Run-Job; diese muss der Region Ihres Subnetzes entsprechen.
    • NETWORK durch den voll qualifizierten Ressourcennamen Ihres freigegebenen VPC-Netzwerks.
    • SUBNET durch den voll qualifizierten Ressourcennamen Ihres Subnetzes.
    • Optional: Ersetzen Sie NETWORK_TAG_NAMES durch die Namen der Netzwerk-Tags, die Sie einem Job zuordnen möchten. Für Jobs werden Netzwerk-Tags auf Ausführungsebene angegeben. Jede Jobausführung kann unterschiedliche Netzwerk-Tags haben, z. B. network-tag-2.
    • EGRESS_SETTING durch einen Wert für die Einstellung für ausgehenden Traffic:
      • all-traffic: Sendet den gesamten ausgehenden Traffic über das freigegebene VPC-Netzwerk.
      • private-ranges-only: Sendet nur Traffic an interne Adressen über das freigegebene VPC-Netzwerk.
    • IMAGE durch die URL Ihres Job-Container-Images.
  3. Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:

    gcloud run jobs replace job.yaml

Dual-Stack-Subnetz einrichten

Informationen zum Hinzufügen eines Dual-Stack-Subnetzes mit einem internen IPv6-Bereich für einen Cloud Run-Dienst oder -Job finden Sie unter Dual-Stack-Subnetz einrichten.

Dienst trennen

Console

  • So entfernen Sie Ihren Dienst aus dem freigegebenen VPC-Netzwerk:

    1. Rufen Sie in der Google Cloud Console die Seite „Cloud Run“ auf:

      Zu Cloud Run

    2. Klicken Sie auf den Dienst, den Sie entfernen möchten, und dann auf Neue Überarbeitung bearbeiten und bereitstellen.

    3. Klicken Sie auf den Tab Netzwerk.

    4. Heben Sie die Markierung von Mit einer VPC für ausgehenden Traffic verbinden auf.

    5. Klicken Sie auf Bereitstellen.

    6. Klicken Sie auf den Tab Netzwerk, um zu prüfen, dass sich der Dienst nicht mehr in Ihrem freigegebenen VPC-Netzwerk befindet. Netzwerk und Subnetz werden nicht mehr auf der VPC-Karte aufgeführt.

  • So entfernen Sie nur die Netzwerk-Tags, während der Dienst mit dem freigegebenen VPC-Netzwerk verbunden bleibt:

    1. Klicken Sie auf den Dienst, der die zu entfernenden Netzwerk-Tags enthält, und dann auf Neue Überarbeitung bearbeiten und bereitstellen.

    2. Klicken Sie auf den Tab Netzwerk.

    3. Löschen Sie die Namen der Netzwerk-Tags, die nicht mehr mit Ihrem Dienst verknüpfen sein sollen.

    4. Klicken Sie auf Bereitstellen.

gcloud

  • Führen Sie folgenden Befehl aus, um Ihren Dienst aus dem freigegebenen VPC-Netzwerk zu entfernen:

    gcloud run services update SERVICE_NAME --region=REGION \
    --clear-network
  • Führen Sie folgenden Befehl aus, um nur die Netzwerk-Tags zu entfernen, während der Dienst mit dem freigegebenen VPC-Netzwerk verbunden bleibt:

    gcloud run services update SERVICE_NAME --region=REGION \
    --clear-network-tags

    Ersetzen Sie Folgendes:

    • SERVICE_NAME: Der Name Ihres Cloud Run-Dienstes.
    • REGION: Die Region für Ihren Cloud Run-Dienst.

YAML

  • So entfernen Sie Ihren Dienst aus dem freigegebenen VPC-Netzwerk:

    1. Laden Sie die YAML-Konfiguration des Dienstes herunter:

      gcloud run services describe SERVICE_NAME --format export > service.yaml
    2. Entfernen Sie folgenden Inhalt aus der service.yaml-Datei:

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'

      Wo

      • NETWORK: der voll qualifizierte Ressourcenname des freigegebenen VPC-Netzwerks.
      • SUBNET: der voll qualifizierte Ressourcenname Ihres Subnetzes.
      • Optional: NETWORK_TAG_NAMES: die Namen der Netzwerktags, wenn Sie diese mit einem Dienst verknüpft haben.
    3. Aktualisieren Sie den Dienst mit dem folgenden Befehl:

      gcloud run services replace service.yaml
  • So entfernen Sie nur die Netzwerk-Tags, während der Dienst mit dem freigegebenen VPC-Netzwerk verbunden bleibt:

    1. Laden Sie die YAML-Konfiguration des Dienstes herunter:

      gcloud run services describe SERVICE_NAME --format export > service.yaml
    2. Entfernen Sie die Variable tags aus dem Inhalt der service.yaml-Datei und lassen Sie die Variablen network und subnetwork an ihrem Ort, wie im folgenden Beispiel gezeigt:

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]'

      Ersetzen Sie Folgendes:

      • NETWORK: der voll qualifizierte Ressourcenname des freigegebenen VPC-Netzwerks.
      • SUBNET: der voll qualifizierte Ressourcenname Ihres Subnetzes.
    3. Aktualisieren Sie den Dienst mit dem folgenden Befehl:

      gcloud run services replace service.yaml

Job trennen

Console

  • So entfernen Sie Ihren Job aus dem freigegebenen VPC-Netzwerk:

    1. Rufen Sie in der Google Cloud Console die Seite „Cloud Run“ auf:

      Zu Cloud Run

    2. Klicken Sie auf den Job, den Sie entfernen möchten, und dann auf Neue Überarbeitung bearbeiten und bereitstellen.

    3. Klicken Sie auf den Tab Konfiguration.

    4. Heben Sie die Markierung von Mit einer VPC für ausgehenden Traffic verbinden auf.

    5. Klicken Sie auf Aktualisieren.

    6. Klicken Sie auf den Tab Konfiguration, um zu prüfen, dass sich der Job nicht mehr in Ihrem freigegebenen VPC-Netzwerk befindet. Netzwerk und Subnetz werden nicht mehr auf der VPC-Karte aufgeführt.

  • So entfernen Sie nur die Netzwerk-Tags, während der Job mit dem freigegebenen VPC-Netzwerk verbunden bleibt:

    1. Klicken Sie auf den Job, der die zu entfernenden Netzwerk-Tags enthält, und dann auf Neue Überarbeitung bearbeiten und bereitstellen.

    2. Klicken Sie auf den Tab Verbindungen.

    3. Löschen Sie die Namen der Netzwerk-Tags, die nicht mehr mit Ihrem Job verknüpfen sein sollen.

    4. Klicken Sie auf Aktualisieren.

gcloud

  • Führen Sie folgenden Befehl aus, um Ihren Job aus dem freigegebenen VPC-Netzwerk zu entfernen:

    gcloud run jobs update JOB_NAME --region=REGION \
      --clear-network
      
  • Führen Sie folgenden Befehl aus, um nur die Netzwerk-Tags zu entfernen, während der Job mit dem freigegebenen VPC-Netzwerk verbunden bleibt:

    gcloud run jobs update JOB_NAME --region=REGION \
      --clear-network-tags
      

    Ersetzen Sie Folgendes:

    • JOB_NAME: Der Name Ihres Cloud Run-Jobs.
    • REGION: Die Region für Ihren Cloud Run-Job.

YAML

  • So entfernen Sie Ihren Job aus dem freigegebenen VPC-Netzwerk:

    1. Laden Sie die YAML-Konfiguration des Jobs herunter:

      gcloud run jobs describe JOB_NAME --format export > job.yaml
    2. Entfernen Sie folgenden Inhalt aus der job.yaml-Datei:

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'

      Wo

      • NETWORK: der voll qualifizierte Ressourcenname des freigegebenen VPC-Netzwerks.
      • SUBNET: der voll qualifizierte Ressourcenname Ihres Subnetzes.
      • Optional: NETWORK_TAG_NAMES: die Namen der Netzwerktags, wenn Sie diese mit einem Job verknüpft haben.
    3. Aktualisieren Sie den Job mit dem folgenden Befehl:

      gcloud run jobs replace job.yaml
  • So entfernen Sie nur die Netzwerk-Tags, während der Job mit dem freigegebenen VPC-Netzwerk verbunden bleibt:

    1. Laden Sie die YAML-Konfiguration des Jobs herunter:

      gcloud run jobs describe JOB_NAME --format export > job.yaml
    2. Entfernen Sie folgenden Inhalt aus der job.yaml-Datei:

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'

      Wo

      • NETWORK: der voll qualifizierte Ressourcenname des freigegebenen VPC-Netzwerks.
      • SUBNET: der voll qualifizierte Ressourcenname Ihres Subnetzes.
      • Optional: NETWORK_TAG_NAMES: die Namen der Netzwerktags, wenn Sie diese mit einem Job verknüpft haben.
    3. Aktualisieren Sie den Job mit dem folgenden Befehl:

      gcloud run jobs replace job.yaml

Fehlerbehebung

Subnetz kann nicht gelöscht werden

Bevor Sie ein Subnetz löschen müssen Sie zuerst alle Ressourcen löschen, die es verwenden. Wenn Cloud Run ein Subnetz verwendet, müssen Sie die Verbindung zu Cloud Run über das freigegebene VPC-Netzwerk trennen oder es in ein anderes Subnetz verschieben, bevor Sie das Subnetz löschen.

Freigegebenes VPC-Netzwerk kann nicht getrennt werden

Wenn Sie das freigegebene VPC-Netzwerk im Hostprojekt trennen möchten, führen Sie die Schritte zum Aufheben der Bereitstellung einer freigegebenen VPC aus und trennen auch die Cloud Run-Dienste oder -Jobs aus dem freigegebenen VPC-Netzwerk.

Führen Sie folgenden Befehl aus, um zu sehen, welche Cloud Run-Ressourcen das freigegebene VPC-Netzwerk verwenden:

gcloud compute shared-vpc list-associated-resources HOST_PROJECT_ID

Ersetzen Sie HOST_PROJECT_ID durch die ID Ihres freigegebenen VPC-Hostprojekts.

Direct VPC-Subnetz hat keine IPv4-Adressen mehr

Der folgende Fehler tritt auf, wenn Sie versuchen, die Bereitstellung durchzuführen:

Instance failed to start because of insufficient free IP addresses in the
subnetwork SUBNET_ID when attempting to create an address in the
subnetwork. Please consider moving to a subnetwork with more available IP
addresses.

Wenn das Subnetz des VPC-Netzwerk keine IPv4-Adressen mehr hat, wird dies von Cloud Logging protokolliert. In diesem Fall kann Cloud Run keine weiteren Dienstinstanzen oder Jobaufgaben mehr starten, bis weitere IPv4-Adressen verfügbar sind.

Hier finden Sie Strategien zur Behebung dieses Problems.

Zugewiesene IP-Adressen anzeigen

Um zu sehen, welche IP-Adressen Cloud Run zugewiesen hat, rufen Sie in der Google Cloud Console die Seite „IP-Adressen“ auf oder führen folgenden Befehl über die Google Cloud CLI aus:

gcloud compute addresses list