使用 Workflows 擴充 Cloud Run worker 集區

建立 Cloud Run 工作站集區後,您可以使用 Workflows 自動調整集區規模。您可以根據外部事件、自訂邏輯或時間表調整執行個體數量。

事前準備

使用 Workflows 部署及執行 Cloud Run 工作站集區工作流程時,須符合下列需求:

  1. 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
  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. 啟用 Cloud Run Admin API 和 Workflows API。

    啟用 API 時所需的角色

    如要啟用 API,您需要服務使用情形管理員 IAM 角色 (roles/serviceusage.serviceUsageAdmin),其中包含 serviceusage.services.enable 權限。瞭解如何授予角色

    啟用 API

必要的角色

如要取得透過 Workflows 部署及執行 Cloud Run worker 集區所需的權限,請要求管理員授予您下列 IAM 角色:

如要允許 Workflows 更新 Cloud Run 工作站集區,用於部署工作流程的服務帳戶必須具備下列角色:

如需與 Cloud Run 相關聯的 IAM 角色和權限清單,請參閱「Cloud Run IAM 角色」和「Cloud Run IAM 權限」。如果 Cloud Run 工作人員集區與Google Cloud API (例如 Cloud 用戶端程式庫) 介接,請參閱服務身分設定指南。 如要進一步瞭解如何授予角色,請參閱「部署權限」和「管理存取權」。

建立 Cloud Run 工作站集區

如果尚未建立 Cloud Run worker 集區,請建立一個。稍後執行工作流程時,您會參照 Cloud Run worker 集區的名稱。

建立、部署及執行工作流程

下列工作流程會更新 Cloud Run 工作站集區的執行個體數量。

  1. 在主目錄中,為工作流程建立新的 YAML 檔案 (例如 update-cr-worker-pool.yaml),然後將下列內容複製並貼到檔案中:

    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. 部署工作流程,並與指定的服務帳戶建立關聯:

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

    更改下列內容:

    • WORKFLOW_NAME:工作流程名稱,例如 update-worker-pool。工作流程名稱應與您先前建立的 YAML 檔案名稱相符。
    • REGION:Cloud Run worker 集區的部署區域,例如 europe-west1
    • SERVICE_ACCOUNT:已獲派必要角色的服務帳戶電子郵件地址,例如:
      • SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
      • PROJECT_NUMBER-compute@developer.gserviceaccount.com
  3. 使用工作站集區詳細資料和執行個體計數執行工作流程:

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

    更改下列內容:

    • WORKFLOW_NAME:工作流程名稱。
    • REGION:Cloud Run worker 集區的部署區域,例如 europe-west1
    • WORKER_POOL_NAME:工作站集區的名稱。
    • INSTANCE_COUNT:工作站集區的修改後執行個體數量,例如 3

驗證更新

執行工作流程後,您可以在 Google Cloud 控制台的下列位置查看更新:

  • 如要查看執行狀態和結果,請前往 Workflows 詳細資料頁面,然後選取您的工作流程:

    前往「Workflows」頁面

    確認工作流程的最新執行作業中,manualInstanceCount 欄位已變更。

  • 如要確認 Cloud Run 更新是否成功,請前往工作站集區頁面:

    前往 Cloud Run

    確認工作站集區的手動調整大小計數已變更。