Cloud Run-Worker-Pools mit Workflows skalieren

Nachdem Sie einen Cloud Run-Worker-Pool erstellt haben, können Sie Workflows verwenden, um die Skalierung zu automatisieren. So können Sie die Anzahl der Instanzen basierend auf externen Ereignissen, benutzerdefinierter Logik oder Zeitplänen anpassen.

Hinweis

In der folgenden Liste sind die Anforderungen für die Bereitstellung und Ausführung eines Cloud Run-Worker-Pool-Workflows mit Workflows beschrieben:

  1. Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie noch kein Konto haben Google Cloud, erstellen Sie ein Konto, um die Leistung unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Aktivieren Sie die Cloud Run Admin API und die Workflows APIs.

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin), die die Berechtigung serviceusage.services.enable enthält. Weitere Informationen zum Zuweisen von Rollen.

    APIs aktivieren

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die you need to deploy and execute Cloud Run worker pools with Workflows, benötigen:

Damit Workflows den Cloud Run-Worker-Pool aktualisieren kann, muss das Dienstkonto, mit dem Sie Ihren Workflow bereitstellen, die folgende Rolle haben:

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-Worker-Pool mit Google 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.

Cloud Run-Worker-Pool erstellen

Erstellen Sie einen Cloud Run-Worker-Pool falls noch nicht geschehen. Sie verweisen später beim Ausführen des Workflows auf den Namen des Cloud Run-Worker-Pools.

Workflow erstellen, bereitstellen und ausführen

Der folgende Workflow aktualisiert die Anzahl der Instanzen Ihres Cloud Run-Worker-Pools.

  1. Erstellen Sie in Ihrem Home-Verzeichnis eine neue YAML-Datei für Ihren Workflow, z. B. update-cr-worker-pool.yaml, und kopieren Sie den folgenden Inhalt in die Datei:

    main:
      params: [args]
      steps:
        - init:
            assign:
              - project: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
              - region: ${args.region}
              - workerPoolName: ${args.workerPool}
              - instanceCount: ${args.instanceCount}
              - workerPoolUrl: ${"https://run.googleapis.com/v2/projects/" + project + "/locations/" + region + "/workerPools/" + workerPoolName}
        - updateWorkerPool:
            call: http.patch
            args:
              url: ${workerPoolUrl}
              query:
                updateMask: "scaling.manualInstanceCount"
              auth:
                type: OAuth2
              body:
                scaling:
                  manualInstanceCount: ${int(instanceCount)}
            result: updateResult
        - returnOutput:
            return: ${updateResult.body}
    
  2. Stellen Sie den Workflow bereit und verknüpfen Sie ihn mit einem angegebenen Dienstkonto:

    gcloud workflows deploy WORKFLOW_NAME \
        --source=WORKFLOW_NAME.yaml \
        --location=REGION \
        --service-account=SERVICE_ACCOUNT

    Ersetzen Sie Folgendes:

    • WORKFLOW_NAME: der Name Ihres Workflows, z. B. update-worker-pool. Der Workflow-Name muss mit dem Namen der zuvor erstellten YAML-Datei übereinstimmen.
    • REGION: die Region, in der Ihr Cloud Run-Worker-Pool bereitgestellt wird, z. B. europe-west1.
    • SERVICE_ACCOUNT: die E-Mail-Adresse des Dienstkontos, dem die erforderlichen Rollen zugewiesen wurden, z. B.
      • SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
      • PROJECT_NUMBER-compute@developer.gserviceaccount.com
  3. Führen Sie den Workflow mit den Details Ihres Worker-Pools und der Anzahl der Instanzen aus:

    gcloud workflows execute WORKFLOW_NAME \
        --location=REGION \
        --data='{"region":"REGION", "workerPool":"WORKER_POOL_NAME", "instanceCount":INSTANCE_COUNT}'

    Ersetzen Sie Folgendes:

    • WORKFLOW_NAME: der Name Ihres Workflows.
    • REGION: die Region, in der Ihr Cloud Run-Worker-Pool bereitgestellt wird, z. B. europe-west1.
    • WORKER_POOL_NAME: der Name Ihres Worker-Pools.
    • INSTANCE_COUNT: die geänderte Anzahl der Instanzen für den Worker Pool, z. B. 3.

Aktualisierungen prüfen

Nachdem Sie den Workflow ausgeführt haben, können Sie die Aktualisierungen an den folgenden Stellen in der Google Cloud Konsole ansehen:

  • Rufen Sie die Detailseite „Workflows“ auf und wählen Sie Ihren Workflow aus, um den Ausführungsstatus und die Ergebnisse aufzurufen:

    Zur Seite "Workflows"

    Prüfen Sie, ob sich das Feld manualInstanceCount in der letzten Ausführung des Workflows geändert hat.

  • Rufen Sie die Seite „Worker-Pools“ auf, um zu prüfen, ob die Aktualisierung in Cloud Run erfolgreich war:

    Zu Cloud Run

    Prüfen Sie, ob sich die Anzahl der manuellen Skalierung für Ihren Worker-Pool geändert hat.