Scalare i pool di worker Cloud Run con Workflows

Dopo aver creato un pool di worker Cloud Run, puoi utilizzare Workflows per automatizzare la scalabilità. In questo modo puoi regolare il conteggio delle istanze in base a eventi esterni, logica personalizzata o pianificazioni.

Prima di iniziare

Il seguente elenco descrive i requisiti per l'utilizzo di Workflows per eseguire il deployment e l'esecuzione di un workflow di pool di worker Cloud Run:

  1. Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
  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. Abilita le API Cloud Run Admin e Workflows.

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin), che include l'autorizzazione serviceusage.services.enable. Scopri come concedere i ruoli.

    Abilita le API

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per eseguire il deployment ed eseguire pool di worker Cloud Run con Workflows, chiedi all'amministratore di concederti i seguenti ruoli IAM:

Per consentire a Workflows di aggiornare il pool di worker Cloud Run, il account di servizio utilizzato per il deployment del workflow deve disporre del seguente ruolo:

Per un elenco di ruoli e autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM di Cloud Run e Autorizzazioni IAM di Cloud Run. Se il tuo pool di worker Cloud Run interagisce con le APIGoogle Cloud , come le librerie client Cloud, consulta la guida alla configurazione dell'identità del servizio. Per saperne di più sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestisci l'accesso.

Crea un pool di worker Cloud Run

Crea un pool di worker Cloud Run se non l'hai ancora fatto. In un secondo momento, quando esegui il flusso di lavoro, farai riferimento al nome del pool di worker Cloud Run.

Crea, esegui il deployment ed esegui il workflow

Il seguente workflow aggiorna il conteggio delle istanze del pool di worker Cloud Run.

  1. Nella tua home directory, crea un nuovo file YAML per il tuo workflow, ad esempio update-cr-worker-pool.yaml, e copia e incolla i seguenti contenuti nel tuo file:

    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. Esegui il deployment del flusso di lavoro e associalo a un account di servizio specificato:

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

    Sostituisci quanto segue:

    • WORKFLOW_NAME: il nome del workflow, ad esempio update-worker-pool. Il nome del flusso di lavoro deve corrispondere al nome del file YAML che hai creato in precedenza.
    • REGION: la regione in cui viene eseguito il deployment del pool di worker Cloud Run, ad esempio europe-west1.
    • SERVICE_ACCOUNT: l'email del account di servizio a cui sono stati concessi i ruoli richiesti, ad esempio:
      • SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
      • PROJECT_NUMBER-compute@developer.gserviceaccount.com
  3. Esegui il workflow con i dettagli del pool di worker e il conteggio delle istanze:

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

    Sostituisci quanto segue:

    • WORKFLOW_NAME: il nome del workflow.
    • REGION: la regione in cui viene eseguito il deployment del pool di worker Cloud Run, ad esempio europe-west1.
    • WORKER_POOL_NAME: il nome del pool di worker.
    • INSTANCE_COUNT: il numero modificato di istanze per il pool di worker, ad esempio 3.

Verificare gli aggiornamenti

Dopo aver eseguito il workflow, puoi visualizzare gli aggiornamenti nei seguenti punti della console Google Cloud :

  • Per visualizzare lo stato di esecuzione e i risultati, vai alla pagina dei dettagli di Workflows e seleziona il tuo workflow:

    Vai a Flussi di lavoro

    Verifica che il campo manualInstanceCount sia stato modificato nell'esecuzione più recente del workflow.

  • Per verificare che l'aggiornamento sia andato a buon fine in Cloud Run, vai alla pagina dei pool di worker:

    Vai a Cloud Run

    Verifica che il conteggio di scalabilità manuale per il pool di worker sia cambiato.