Workflows로 Cloud Run 작업자 풀 확장

Cloud Run 작업자 풀을 만든 후에는 Workflows를 사용하여 확장을 자동화할 수 있습니다. 이렇게 하면 외부 이벤트, 커스텀 로직 또는 일정에 따라 인스턴스 수를 조정할 수 있습니다.

시작하기 전에

다음 목록은 Workflows를 사용하여 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. Cloud Run Admin API 및 Workflows API를 사용 설정합니다.

    API 사용 설정에 필요한 역할

    API를 사용 설정하려면 serviceusage.services.enable 권한이 필요합니다. 프로젝트를 만든 경우 소유자 역할 (roles/owner)을 통해 이 권한을 이미 보유하고 있을 가능성이 높습니다. 그렇지 않은 경우 서비스 사용량 관리자 역할 (roles/serviceusage.serviceUsageAdmin)을 통해 이 권한을 얻을 수 있습니다. 역할 부여 방법을 알아보세요.

    API 사용 설정

필요한 역할

Workflows를 사용하여 Cloud Run 작업자 풀을 배포하고 실행하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.

Workflows가 Cloud Run 작업자 풀을 업데이트하도록 허용하려면 워크플로를 배포하는 데 사용되는 서비스 계정에 다음 역할이 있어야 합니다.

Cloud Run과 연결된 IAM 역할 및 권한 목록은 다음 항목을 참조하세요. Cloud Run IAM 역할Cloud Run IAM 권한 Cloud Run 작업자 풀이 Cloud 클라이언트 라이브러리와 같은Google Cloud API와 상호작용하는 경우에는 서비스 ID 구성 가이드를 참조하세요. 역할 부여에 대한 자세한 내용은 배포 권한액세스 관리를 참조하세요.

Cloud Run 작업자 풀 만들기

아직 만들지 않았다면 Cloud Run 작업자 풀을 만듭니다. 나중에 워크플로를 실행할 때 Cloud Run 작업자 풀의 이름을 참조합니다.

워크플로 생성, 배포, 실행

다음 워크플로는 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

    다음을 바꿉니다.

  3. 작업자 풀의 세부정보와 인스턴스 수를 사용하여 워크플로를 실행합니다.

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

    다음을 바꿉니다.

    • WORKFLOW_NAME: 워크플로의 이름입니다.
    • REGION: Cloud Run 작업자 풀이 배포된 리전입니다(예: europe-west1).
    • WORKER_POOL_NAME: 작업자 풀의 이름입니다.
    • INSTANCE_COUNT: 작업자 풀의 수정된 인스턴스 수입니다(예: 3).

업데이트 확인

워크플로를 실행한 후에는 콘솔의 다음 위치에서 업데이트를 확인할 수 있습니다. Google Cloud

  • 실행 상태 및 결과를 보려면 Workflows 세부정보 페이지로 이동하여 워크플로를 선택합니다.

    Workflows로 이동

    워크플로의 가장 최근 실행에서 manualInstanceCount 필드가 변경되었는지 확인합니다.

  • Cloud Run에서 업데이트가 성공했는지 확인하려면 작업자 풀 페이지로 이동합니다.

    Cloud Run으로 이동

    작업자 풀의 수동 확장 수가 변경되었는지 확인합니다.