빌드 작업자 풀 설정(소스 배포)

소스 코드를 Cloud Run에 배포하면 해당 소스가 Cloud Storage 버킷에 저장됩니다. 그러면 Cloud Build가 컨테이너 이미지에 코드를 자동으로 빌드하고 해당 이미지를 이미지 레지스트리에 푸시합니다. 각 빌드는 자체 작업자에서 실행됩니다. Cloud Run은 배포 시 빌드된 이미지를 가져옵니다.

Cloud Build가 VPC 서비스 제어 보안 빌드 컨텍스트에 사용하는 빌드 작업자 풀을 맞춤설정하려면 작업자 풀을 맞춤설정합니다. 이 페이지는 함수를 배포할 때와 Cloud Build에서 사용하는 비공개 풀을 구성할 때 등 소스에서 Cloud Run으로 배포하는 플랫폼 개발자에게 적합합니다.

시작하기 전에

Cloud Build API를 사용 설정합니다.

gcloud services enable cloudbuild.googleapis.com

필요한 역할

소스에서 배포하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

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

비공개 풀로 빌드 보호

기본적으로 Cloud Build는 빌드 프로세스 중에 무제한 인터넷 액세스를 제공합니다. VPC 서비스 제어(VPC SC) 경계를 설정한 경우 경계 내부에 저장된 종속 항목(예: npm 패키지)으로만 빌드의 액세스를 제한하려면 Cloud Build 비공개 작업자 풀 기능을 사용하면 됩니다.

일반적으로 비공개 풀을 설정할 때는 다음 단계를 따릅니다.

  1. 비공개 작업자 풀을 만듭니다. 비공개 풀 만들기 및 관리를 참조하세요.
  2. VPC 서비스 제어 경계를 구성합니다. VPC 서비스 제어 사용을 참조하세요.

  3. 비공개 작업자 풀이 Cloud Run 서비스와 다른 프로젝트에 있으면 Cloud Build 서비스가 작업자 풀에 액세스할 수 있도록 Cloud Run 서비스 에이전트(service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com)에 Cloud Build WorkerPool 사용자(cloudbuild.workerPoolUser) 역할을 부여해야 합니다.

    gcloud projects add-iam-policy-binding PRIVATE_POOL_PROJECT_ID \
        --member serviceAccount:service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com \
        --role roles/cloudbuild.workerPoolUser

    다음과 같이 바꿉니다.

    • PROJECT_NUMBER: 서비스가 실행되는 프로젝트 번호
    • PRIVATE_POOL_PROJECT_ID: 작업자 풀이 있는 프로젝트의 ID 자세한 내용은 비공개 풀에서 빌드 실행을 참조하세요.
  4. 비공개 풀을 사용하여 빌드할 소스에서 서비스를 배포합니다.

gcloud

소스 코드에서 배포할 때 빌드할 비공개 풀을 지정하려면 다음 안내를 따르세요.

gcloud beta run deploy SERVICE \
  --source . \
  --build-worker-pool WORKER_POOL

다음과 같이 바꿉니다.

  • SERVICE를 서비스 이름으로 바꿉니다.
  • WORKER_POOL을 비공개 풀의 이름으로 바꿉니다.

함수를 배포하는 진입점과 함께 --function 플래그를 소스 코드의 함수에 추가합니다.

빌드 작업자 풀 삭제

기존 서비스의 빌드 작업자 풀을 삭제할 수 있습니다.

gcloud

소스 배포에 사용할 Cloud Build 작업자 풀을 지우려면 다음 안내를 따르세요.

gcloud beta run deploy SERVICE \
  --source . \
  --clear-build-worker-pool WORKER_POOL

다음과 같이 바꿉니다.

  • SERVICE를 서비스 이름으로 바꿉니다.
  • WORKER_POOL: 삭제하려는 비공개 풀의 이름