Connectors im freigegebenen VPC-Hostprojekt konfigurieren

Wenn Ihre Organisation eine freigegebene VPC verwendet, können Sie einen Connector für den serverlosen VPC-Zugriff entweder im Dienstprojekt oder im Hostprojekt einrichten. In dieser Anleitung wird beschrieben, wie ein Connector im Hostprojekt eingerichtet wird.

Informationen zum Einrichten eines Connectors in einem Dienstprojekt finden Sie unter Connectors in Dienstprojekten konfigurieren. Weitere Informationen zu den Vorteilen der einzelnen Methoden finden Sie unter Verbindung zu einem freigegebenen VPC-Netzwerk herstellen.

Hinweis

  1. Prüfen Sie die IAM-Rollen (Identity and Access Management) für das Konto, das Sie derzeit verwenden. Das aktive Konto muss die folgenden Rollen für das Hostprojekt haben:

  2. Wählen Sie das Hostprojekt in Ihrer bevorzugten Umgebung aus.

Console

  1. Öffnen Sie das Dashboard der Google Cloud Console.

    Zum Google Cloud Console-Dashboard

  2. Klicken Sie in der Menüleiste oben im Dashboard auf das Projekt-Drop-down-Menü und wählen Sie das Hostprojekt aus.

gcloud

Legen Sie das Standardprojekt in der gcloud CLI auf das Hostprojekt fest. Führen Sie dazu im Terminal Folgendes aus:

gcloud config set project HOST_PROJECT_ID

Dabei gilt:

  • HOST_PROJECT_ID: die ID des freigegebenen VPC-Hostprojekts

Erstellen eines Connectors für Serverless VPC Access

Damit Sie Anfragen an Ihr VPC-Netzwerk senden und die entsprechenden Antworten empfangen können, müssen Sie einen Connector für serverlosen VPC-Zugriff erstellen. Sie können einen Connector mit der Google Cloud Console, der Google Cloud CLI oder Terraform erstellen:

Console

  1. Aktivieren Sie die Serverless VPC Access API für Ihr Projekt.

    API aktivieren

  2. Rufen Sie die Übersichtsseite für serverlosen VPC-Zugriff auf:

    Zur Seite „Serverloser VPC-Zugriff“

  3. Klicken Sie auf Connector erstellen.

  4. Geben Sie im Feld Name einen Namen für den Connector ein. Der Name muss der Compute Engine-Namenskonvention entsprechen und weniger als 21 Zeichen umfassen. Bindestriche (-) zählen als zwei Zeichen.

  5. Wählen Sie im Feld Region eine Region für den Connector aus. Sie muss mit der Region des serverlosen Dienstes übereinstimmen.

    Wenn sich Ihr Dienst in der Region us-central oder europe-west befindet, verwenden Sie us-central1 oder europe-west1.

  6. Wählen Sie im Feld Netzwerk das VPC-Netzwerk aus, an das der Connector angehängt werden soll.

  7. Klicken Sie auf das Drop-down-Menü Subnetzwerk:

    Wählen Sie ein nicht verwendetes /28-Subnetz aus.

    • Subnetze müssen ausschließlich vom Connector verwendet werden. Sie können nicht von anderen Ressourcen wie VMs, Private Service Connect oder Load-Balancern verwendet werden.
    • Wenn Ihr Subnetz nicht für Private Service Connect oder internes Cloud-Load-Balancing verwendet wird, prüfen Sie, ob das purpose-Subnetz PRIVATE ist. Führen Sie dazu den folgenden Befehl in der gcloud CLI aus:
      gcloud compute networks subnets describe SUBNET_NAME
      
      Ersetzen Sie SUBNET_NAME durch den Namen Ihres Subnetzes.
  8. (Optional) Wenn Sie Skalierungsoptionen für zusätzliche Kontrolle über den Connector festlegen möchten, klicken Sie auf Skalierungseinstellungen anzeigen, um das Skalierungsformular anzuzeigen:

    1. Legen Sie die minimale und maximale Anzahl von Instanzen für den Connector fest oder verwenden Sie die Standardwerte von 2 (Min.) und 10 (Max.). Der Connector wird bei steigendem Traffic horizontal auf das angegebene Maximum hochskaliert, bei sinkendem Traffic wird der Connector jedoch nicht zurückskaliert. Sie müssen Werte zwischen 2 und 10 verwenden und der MIN-Wert muss kleiner als der MAX-Wert sein.
    2. Wählen Sie im Drop-down-Menü Instanztyp den Maschinentyp aus, der für den Connector verwendet werden soll, oder verwenden Sie den Standardwert e2-micro. Beachten Sie die Seitenleiste zu den Kosten auf der linken Seite, wenn Sie den Instanztyp auswählen, der die Bandbreiten- und Kostenschätzungen anzeigt:
  9. Klicken Sie auf Erstellen.

  10. Neben dem Namen des Connectors wird ein grünes Häkchen angezeigt, sobald er verwendet werden kann.

gcloud

  1. Aktualisieren Sie die Komponenten von gcloud auf die neueste Version:

    gcloud components update
    
  2. Aktivieren Sie die Serverless VPC Access API für Ihr Projekt:

    gcloud services enable vpcaccess.googleapis.com
    
  3. Erstellen Sie einen Connector für serverlosen VPC-Zugriff:

    gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
    --region=REGION \
    --subnet=SUBNET \
    --subnet-project=HOST_PROJECT_ID \
    # Optional: specify minimum and maximum instance values between 2 and 10, default is 2 min, 10 max.
    --min-instances=MIN \
    --max-instances=MAX \
    # Optional: specify machine type, default is e2-micro
    --machine-type=MACHINE_TYPE
    

    Dabei gilt:

    • CONNECTOR_NAME: Name des Connectors. Der Name muss der Compute Engine-Namenskonvention entsprechen und weniger als 21 Zeichen umfassen. Bindestriche (-) zählen als zwei Zeichen.
    • REGION: Region für den Connector. Dies muss der Region Ihres serverlosen Dienstes entsprechen. Wenn sich Ihr Dienst in der Region us-central oder europe-west befindet, verwenden Sie us-central1 oder europe-west1.
    • SUBNET: der Name eines nicht verwendeten /28-Subnetzes.
      • Subnetze müssen ausschließlich vom Connector verwendet werden. Sie können nicht von anderen Ressourcen wie VMs, Private Service Connect oder Load-Balancern verwendet werden.
      • Wenn Ihr Subnetz nicht für Private Service Connect oder Cloud-Load-Balancing verwendet wird, prüfen Sie, ob das purpose-Subnetz PRIVATE ist. Führen Sie dazu den folgenden Befehl in der gcloud CLI aus:
        gcloud compute networks subnets describe SUBNET_NAME
        
        Dabei gilt:
        • SUBNET_NAME: der Name Ihres Subnetzes
    • HOST_PROJECT_ID: die ID des Hostprojekts
    • MIN: Die Mindestanzahl der Instanzen, die für den Connector verwendet werden sollen. Verwenden Sie eine Ganzzahl zwischen 2 und 9. Der Standardwert ist 2. Weitere Informationen zur Skalierung von Connectors finden Sie unter Durchsatz und Skalierung.
    • MAX: Die maximale Anzahl von Instanzen, die für den Connector verwendet werden sollen. Verwenden Sie eine Ganzzahl zwischen 3 und 10. Der Standardwert ist 10. Wenn es der Traffic erfordert, wird der Connector auf [MAX] Instanzen skaliert, nicht jedoch wieder herunterskaliert. Weitere Informationen zur Skalierung von Connectors finden Sie unter Durchsatz und Skalierung.
    • MACHINE_TYPE: f1-micro, e2-micro oder e2-standard-4. Weitere Informationen zum Connector-Durchsatz, einschließlich Maschinentyp und Skalierung, finden Sie unter Durchsatz und Skalierung.

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

  4. Prüfen Sie vor der Verwendung des Connectors, ob sein Status READY lautet:

    gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \
    --region=REGION
    

    Dabei gilt:

    • CONNECTOR_NAME: Der Name Ihres Connectors; dies ist der Name, den Sie im vorherigen Schritt angegeben haben
    • REGION: Region Ihres Connectors; dies ist die Region, die Sie im vorherigen Schritt angegeben haben

    Die Ausgabe sollte die Zeile state: READY enthalten.

Terraform

Sie können eine Terraform-Ressource verwenden, um die vpcaccess.googleapis.com API zu aktivieren.

resource "google_project_service" "vpcaccess-api" {
  project = var.project_id # Replace this with your project ID in quotes
  service = "vpcaccess.googleapis.com"
}

Sie können Terraform-Module verwenden, um ein VPC-Netzwerk und ein Subnetz zu erstellen. Danach können Sie den Connector erstellen.

module "test-vpc-module" {
  source       = "terraform-google-modules/network/google"
  version      = "~> 9.0"
  project_id   = var.project_id # Replace this with your project ID in quotes
  network_name = "my-serverless-network"
  mtu          = 1460

  subnets = [
    {
      subnet_name   = "serverless-subnet"
      subnet_ip     = "10.10.10.0/28"
      subnet_region = "us-central1"
    }
  ]
}

module "serverless-connector" {
  source     = "terraform-google-modules/network/google//modules/vpc-serverless-connector-beta"
  version    = "~> 9.0"
  project_id = var.project_id
  vpc_connectors = [{
    name        = "central-serverless"
    region      = "us-central1"
    subnet_name = module.test-vpc-module.subnets["us-central1/serverless-subnet"].name
    # host_project_id = var.host_project_id # Specify a host_project_id for shared VPC
    machine_type  = "e2-standard-4"
    min_instances = 2
    max_instances = 7
    }
    # Uncomment to specify an ip_cidr_range
    #   , {
    #     name          = "central-serverless2"
    #     region        = "us-central1"
    #     network       = module.test-vpc-module.network_name
    #     ip_cidr_range = "10.10.11.0/28"
    #     subnet_name   = null
    #     machine_type  = "e2-standard-4"
    #     min_instances = 2
    #   max_instances = 7 }
  ]
  depends_on = [
    google_project_service.vpcaccess-api
  ]
}

Cloud Run für das Dienstprojekt aktivieren

Aktivieren Sie die Cloud Run API für das Dienstprojekt. Dies ist erforderlich, um in nachfolgenden Schritten IAM-Rollen hinzuzufügen und das Dienstprojekt Cloud Run verwenden zu können.

Console

  1. Öffnen Sie die Seite für die Cloud Run API.

    Cloud Run API

  2. Klicken Sie in der Menüleiste oben im Dashboard auf das Drop-down-Menü des Projekts und wählen Sie das Dienstprojekt aus.

  3. Klicken Sie auf Aktivieren.

gcloud

Führen Sie im Terminal folgenden Befehl aus:

gcloud services enable run.googleapis.com --project=SERVICE_PROJECT_ID

Dabei gilt:

  • SERVICE_PROJECT_ID: die ID des Dienstprojekts

Zugriff auf den Connector gewähren

Ermöglichen Sie den Zugriff auf den Connector. Weisen Sie dazu dem Dienstprojekt Cloud Run Service Agent die IAM-Rolle Nutzer von serverlosem VPC-Zugriff auf dem Host-Projekt zu.

Console

  1. Öffnen Sie die IAM-Seite.

    Seite „IAM“

  2. Klicken Sie auf das Projekt-Drop-down-Menü und wählen Sie das Hostprojekt aus.

  3. Klicken Sie auf Add.

  4. Geben Sie in das Feld Neue Hauptkonten die E-Mail-Adresse des Cloud Run-Dienst-Agent für den Cloud Run-Dienst ein:

    service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com

    Dabei gilt:

    • SERVICE_PROJECT_NUMBER: die Projektnummer, die dem Dienstprojekt zugeordnet ist. Diese unterscheidet sich von der Projekt-ID. Sie finden die Projektnummer in der Google Cloud Console auf der Seite Projekteinstellungen des Dienstprojekts.
  5. Wählen Sie im Feld Rolle die Option Nutzer von serverlosem VPC-Zugriff aus.

  6. Klicken Sie auf Speichern.

gcloud

Führen Sie im Terminal 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/vpcaccess.user

Dabei gilt:

  • HOST_PROJECT_ID: die ID des freigegebenen VPC-Hostprojekts
  • SERVICE_PROJECT_NUMBER: die mit dem Dienstkonto verknüpfte Projektnummer. Diese unterscheidet sich von der Projekt-ID. Sie können die Projektnummer ermitteln. Führen Sie dazu Folgendes aus:

    gcloud projects describe SERVICE_PROJECT_ID
    

Connector sichtbar machen

In der IAM-Richtlinie des Hostprojekts müssen Sie den Hauptkonten, die Cloud Run-Dienste bereitstellen, die folgenden zwei vordefinierten Rollen zuweisen:

Alternativ können Sie benutzerdefinierte Rollen oder andere vordefinierte Rollen verwenden, die alle Berechtigungen der Rolle „Betrachter von serverlosem VPC-Zugriff“ (vpcaccess.viewer) enthalten.

Console

  1. Öffnen Sie die IAM-Seite.

    Seite „IAM“

  2. Klicken Sie auf das Projekt-Drop-down-Menü und wählen Sie das Hostprojekt aus.

  3. Klicken Sie auf Add.

  4. Geben Sie im Feld Neue Hauptkonten die E-Mail-Adresse des Hauptkontos ein, das den Connector aus dem Dienstprojekt sehen soll. In diesem Feld können Sie mehrere E-Mail-Adressen eingeben.

  5. Wählen Sie im Feld Rolle die folgenden beiden Rollen aus:

    • Betrachter von serverlosem VPC-Zugriff
    • Compute-Netzwerkbetrachter
  6. Klicken Sie auf Speichern.

gcloud

Führen Sie im Terminal die folgenden Befehle aus:

gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
--member=PRINCIPAL \
--role=roles/vpcaccess.viewer

gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
--member=PRINCIPAL \
--role=roles/compute.networkViewer

Dabei gilt:

Dienst für die Verwendung des Connectors konfigurieren

Für jeden Cloud Run-Dienst, der Zugriff auf Ihre freigegebene VPC benötigt, müssen Sie den Connector für den Dienst angeben. Sie können den Connector über die Google Cloud Console, die Google Cloud CLI, die YAML-Datei oder Terraform angeben, wenn Sie einen neuen Dienst bereitstellen oder einen vorhandenen Dienst aktualisieren.

Console

  1. Rufen Sie in der Google Cloud Console Cloud Run auf.

    Öffnen Sie Cloud Run.

  2. Klicken Sie auf Dienst erstellen, wenn Sie einen neuen Dienst für die Bereitstellung konfigurieren. Wenn Sie einen vorhandenen Dienst konfigurieren möchten, 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, Netzwerk, Sicherheit, um die Seite zur Dienstkonfiguration zu maximieren.

  4. Klicken Sie auf den Tab Verbindungen.

    Bild

    • Wählen Sie im Feld VPC-Connector den zu verwendenden Connector oder Keiner aus, um die Verbindung Ihres Dienstes mit einem VPC-Netzwerk zu trennen.
  5. Klicken Sie auf Erstellen oder Bereitstellen.

gcloud

  1. Legen Sie das gcloud CLI so fest, dass das Projekt mit der Cloud Run-Ressource verwendet wird:

    gcloud config set project PROJECT_ID
    Dabei gilt:

    • PROJECT_ID: die ID des Projekts, das die Cloud Run-Ressource enthält, die Zugriff auf Ihre freigegebene VPC benötigt. Wenn sich die Cloud Run-Ressource im Hostprojekt befindet, ist dies die Hostprojekt-ID. Wenn sich die Cloud Run-Ressource in einem Dienstprojekt befindet, ist dies die Dienstprojekt-ID.
  2. Verwenden Sie das Flag --vpc-connector.

  • Für vorhandene Dienste:
    gcloud run services update SERVICE --vpc-connector=CONNECTOR_NAME
  • Für neue Dienste:
    gcloud run deploy SERVICE --image=IMAGE_URL --vpc-connector=CONNECTOR_NAME
    Dabei gilt:
    • SERVICE: der Name Ihres Dienstes
    • IMAGE_URL: ein Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/hello:latest
    • CONNECTOR_NAME: der Name des Connectors. Verwenden Sie den voll qualifizierten Namen bei der Bereitstellung aus einem freigegebenen VPC-Dienstprojekt (im Gegensatz zum Hostprojekt), z. B.:
      projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
      Dabei ist HOST_PROJECT_ID die ID des Hostprojekts, CONNECTOR_REGION die Region des Connectors und CONNECTOR_NAME der Name, den Sie dem Connector gegeben haben.

YAML

Legen Sie das gcloud CLI so fest, dass das Projekt mit der Cloud Run-Ressource verwendet wird:

gcloud config set project PROJECT_ID

Dabei gilt:

  • PROJECT_ID: die ID des Projekts, das die Cloud Run-Ressource enthält, die Zugriff auf Ihre freigegebene VPC benötigt. Wenn sich die Cloud Run-Ressource im Hostprojekt befindet, ist dies die Hostprojekt-ID. Wenn sich die Cloud Run-Ressource in einem Dienstprojekt befindet, ist dies die Dienstprojekt-ID.
  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. Fügen Sie das Attribut run.googleapis.com/vpc-access-connector unter dem Attribut annotations unter dem übergeordneten Attribut spec hinzu oder aktualisieren Sie es:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
          name: REVISION

    Dabei gilt:

    • SERVICE: der Name Ihres Cloud Run-Dienstes.
    • CONNECTOR_NAME: der Name des Connectors. Verwenden Sie den voll qualifizierten Namen bei der Bereitstellung aus einem freigegebenen VPC-Dienstprojekt (im Gegensatz zum Hostprojekt), z. B.:
      projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
      Dabei ist HOST_PROJECT_ID die ID des Hostprojekts, CONNECTOR_REGION die Region des Connectors und CONNECTOR_NAME der Name, den Sie dem Connector gegeben haben.
    • REVISION durch einen neuen Überarbeitungsnamen oder löschen (falls vorhanden). Wenn Sie einen neuen Überarbeitungsnamen angeben, muss er die folgenden Kriterien erfüllen:
      • Beginnt mit SERVICE-
      • Enthält nur Kleinbuchstaben, Ziffern und -
      • Endet nicht mit -
      • Darf nicht mehr als 63 Zeichen enthalten
  3. Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:

    gcloud run services replace service.yaml

Terraform

Sie können eine Terraform-Ressource verwenden, um einen Dienst zu erstellen und für die Verwendung Ihres Connectors zu konfigurieren.

# Cloud Run service
resource "google_cloud_run_v2_service" "gcr_service" {
  name     = "mygcrservice"
  provider = google-beta
  location = "us-west1"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      resources {
        limits = {
          cpu    = "1000m"
          memory = "512Mi"
        }
      }
      # the service uses this SA to call other Google Cloud APIs
      # service_account_name = myservice_runtime_sa
    }

    scaling {
      # Limit scale up to prevent any cost blow outs!
      max_instance_count = 5
    }

    vpc_access {
      # Use the VPC Connector
      connector = google_vpc_access_connector.connector.id
      # all egress from the service should go through the VPC Connector
      egress = "ALL_TRAFFIC"
    }
  }
}

Weitere Informationen