Build-Worker-Pools festlegen (Source-Bereitstellung)

Wenn Sie Ihren Quellcode in Cloud Run bereitstellen, wird diese Quelle in einem Cloud Storage-Bucket gespeichert. Cloud Build erstellt dann automatisch Ihren Code in einem Container-Image und überträgt dieses Image per Push in eine Image-Registry. Jeder Build wird auf einem eigenen Worker ausgeführt. Cloud Run importiert das erstellte Image bei der Bereitstellung.

Wenn Sie den Build-Worker-Pool anpassen möchten, den Cloud Build für einen durch VPC Service Controls gesicherten Build-Kontext verwendet, passen Sie den Worker-Pool an. Diese Seite ist für Plattformentwickler relevant, die Cloud Run-Dienste oder Funktionen aus dem Quellcode mit der Google Cloud CLI bereitstellen und private Pools konfigurieren, die von Cloud Build verwendet werden. Die gcloud CLI-Flags für Build-Worker-Pools werden für Quellcodebereitstellungen (--source) unterstützt, nicht aber für Container-Image-Bereitstellungen (--image).

Hinweise

  • Enable the Cloud Run Admin API and Cloud Build APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

    Nachdem die Cloud Run Admin API aktiviert wurde, wird das Compute Engine-Standarddienstkonto automatisch erstellt.

Erforderliche Rollen

Sie oder Ihr Administrator müssen dem Bereitstellerkonto und dem Cloud Build-Dienstkonto die folgenden IAM-Rollen zuweisen.

Klicken, um die erforderlichen Rollen für das Bereitstellerkonto aufzurufen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen und Bereitstellen aus der Quelle benötigen:

Klicken, um die erforderlichen Rollen für das Cloud Build-Dienstkonto aufzurufen

Cloud Build verwendet automatisch das Compute Engine-Standarddienstkonto als Standard-Cloud Build-Dienstkonto zum Erstellen Ihres Quellcodes und Ihrer Cloud Run-Ressource, sofern Sie dieses Verhalten nicht überschreiben. Damit Cloud Build Ihre Quellen erstellen kann, bitten Sie Ihren Administrator, dem Compute Engine-Standarddienstkonto in Ihrem Projekt die Rolle Cloud Run Builder (roles/run.builder) zuzuweisen:

  gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --role=roles/run.builder
  

Ersetzen Sie PROJECT_NUMBER durch die Google Cloud Projektnummer und PROJECT_ID durch die Google Cloud Projekt-ID. Eine detaillierte Anleitung zum Ermitteln der Projekt-ID und der Projektnummer finden Sie unter Projekte erstellen und verwalten.

Es dauert einige Minuten, bis die Zuweisung der Rolle „Cloud Run-Builder“ für das Compute Engine-Standarddienstkonto übertragen wurde.

Eine Liste der IAM-Rollen und -Berechtigungen im Zusammenhang mit Cloud Run finden Sie unter IAM-Rollen für Cloud Run und IAM-Berechtigungen für Cloud Run. Wenn Ihr Cloud Run-Dienst mitGoogle Cloud -APIs wie Cloud-Clientbibliotheken verknüpft ist, lesen Sie die Konfigurationsanleitung für Dienstidentitäten. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Bereitstellungsberechtigungen und Zugriff verwalten.

Build mit privaten Pools sichern

Standardmäßig hat Cloud Build während des Build-Prozesses uneingeschränkten Internetzugriff. Wenn Sie einen VPC Service Controls-Perimeter (VPC SC) eingerichtet haben und den Zugriff des Builds auf Abhängigkeiten beschränken möchten, die im Perimeter gespeichert sind (z. B. npm-Pakete), können Sie die privaten Worker-Pools von Cloud Build verwenden.

Gehen Sie im Allgemeinen so vor, um einen privaten Pool einzurichten:

  1. Erstellen Sie Ihren privaten Worker-Pool. Siehe Private Pools erstellen und verwalten.
  2. Konfigurieren Sie den VPC Service Controls-Perimeter. Siehe VPC Service Controls verwenden.

  3. Wenn sich Ihr privater Worker-Pool in einem anderen Projekt als Ihr Cloud Run-Dienst befindet, müssen Sie dem Cloud Run-Dienst-Agent (service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com) die Rolle Cloud Build-WorkerPool-Nutzer (cloudbuild.workerPoolUser) zuweisen, damit der Cloud Build-Dienst auf den Worker-Pool zugreifen kann.

    gcloud projects add-iam-policy-binding PRIVATE_POOL_PROJECT_ID \
        --member serviceAccount:service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com \
        --role roles/cloudbuild.workerPoolUser

    Ersetzen Sie:

    • PROJECT_NUMBER durch die Projektnummer, in der der Dienst ausgeführt wird.
    • PRIVATE_POOL_PROJECT_ID durch die ID des Projekts, in dem sich der Worker-Pool befindet. Weitere Informationen finden Sie unter Builds in einem privaten Pool ausführen.
  4. Stellen Sie Ihren Dienst von der Quelle zum Build mit einem privaten Pool bereit:

    gcloud

    Wenn Sie beim Bereitstellen aus Quellcode einen privaten Pool für den Build angeben möchten, verwenden Sie das Flag --build-worker-pool:

    gcloud run deploy SERVICE \
        --source . \
        --build-worker-pool WORKER_POOL

    Ersetzen Sie:

    • SERVICE durch den Namen Ihres Dienstes.
    • Ersetzen Sie WORKER_POOL durch den Namen des privaten Pools.

    Wenn Sie eine Funktion bereitstellen, fügen Sie das Flag --function mit dem Funktionseinstiegspunkt aus Ihrem Quellcode hinzu.

Build-Worker-Pools löschen

Sie können Build-Worker-Pools für vorhandene Dienste löschen.

gcloud

Verwenden Sie das Flag --clear-build-worker-pool, um den Cloud Build-Worker-Pool für Source-Bereitstellungen zu löschen:

gcloud run deploy SERVICE \
    --source . \
    --clear-build-worker-pool WORKER_POOL

Ersetzen Sie:

  • SERVICE durch den Namen Ihres Dienstes.
  • Ersetzen Sie WORKER_POOL durch den Namen des privaten Pools, den Sie löschen möchten.

Wenn Sie eine Funktion bereitstellen, fügen Sie das Flag --function mit dem Funktionseinstiegspunkt aus Ihrem Quellcode hinzu.