Scalare i pool di worker Cloud Run con Workflows

Dopo aver creato un pool di worker Cloud Run, puoi utilizzare Workflows per automatizzarne lo scaling. In questo modo puoi modificare 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 il deployment e l'esecuzione di un workflow dei pool di worker Cloud Run:

  1. 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

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

  3. Abilita l'API Cloud Run Admin e le API Workflows.

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre dell'autorizzazione serviceusage.services.enable. Se hai creato il progetto, probabilmente hai già questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore di Service Usage (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.

    Abilita le API

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per eseguire il deployment e l'esecuzione dei 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 avere il 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 Google Cloud API, 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 già fatto. Quando esegui il workflow in un secondo momento, 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 directory home, crea un nuovo file YAML per il workflow, ad esempio update-cr-worker-pool.yaml, quindi copia e incolla i seguenti contenuti nel 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 workflow 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 workflow deve corrispondere al nome del file YAML creato in precedenza.
    • REGION: la regione in cui è stato eseguito il deployment del pool di worker Cloud Run, ad esempio europe-west1.
    • SERVICE_ACCOUNT: l'indirizzo email del account di servizio a cui sono stati concessi i ruoli richiesti, ad esempio:
      • SERVICE_ACCOUNT_NAME@PROJECT_ID.
      • PROJECT_NUMBER-compute@
  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 è stato 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.

Verifica gli aggiornamenti

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

  • Per visualizzare lo stato di esecuzione e i risultati, vai alla pagina dei dettagli di Workflows e seleziona il 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 dello scaling manuale per il pool di worker sia stato modificato.