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 werden die Anforderungen für die Verwendung von Workflows zum Bereitstellen und Ausführen eines Cloud Run-Worker-Pools-Workflows beschrieben:

  1. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit 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 API.

    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 Sie zum Bereitstellen und Ausführen von Cloud Run-Worker-Pools mit Workflows benötigen:

Damit Workflows den Cloud Run-Worker-Pool aktualisieren können, muss das Dienstkonto, das zum Bereitstellen Ihres Workflows verwendet wird, 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-Workerpool 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.

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

Im folgenden Workflow wird die Anzahl der Instanzen Ihres Cloud Run-Worker-Pools aktualisiert.

  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 Ihre 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 Workflowname sollte 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 von Instanzen für den Worker-Pool, z. B. 3.

Änderungen bestätigen

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

  • Um den Ausführungsstatus und die Ergebnisse anzuzeigen, rufen Sie die Detailseite der Workflows auf und wählen Sie Ihren Workflow aus:

    Zur Seite "Workflows"

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

  • So prüfen Sie, ob das Update 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.