소스 코드를 Cloud Run에 배포하면 해당 소스가 Cloud Storage 버킷에 저장됩니다. 그러면 Cloud Build가 컨테이너 이미지에 코드를 자동으로 빌드하고 해당 이미지를 이미지 레지스트리에 푸시합니다. 각 빌드는 자체 작업자에서 실행됩니다. Cloud Run은 배포 시 빌드된 이미지를 가져옵니다.
Cloud Build가 VPC 서비스 제어 보안 빌드 컨텍스트에 사용하는 빌드 작업자 풀을 맞춤설정하려면 작업자 풀을 맞춤설정합니다. 이 페이지는 Google Cloud CLI를 사용하여 소스에서 Cloud Run 서비스 또는 함수를 배포하고 Cloud Build에서 사용하는 비공개 풀을 구성하는 플랫폼 개발자를 대상으로 합니다. 빌드 작업자 풀 gcloud CLI 플래그는 소스 배포(--source
)에 지원되지만 컨테이너 이미지 배포(--image
)에는 지원되지 않습니다.
시작하기 전에
Cloud Run Admin API 및 Cloud Build API를 사용 설정합니다.
gcloud services enable run.googleapis.com \ cloudbuild.googleapis.com
Cloud Run Admin API를 사용 설정하면 Compute Engine 기본 서비스 계정이 자동으로 생성됩니다.
필요한 역할
개발자나 관리자가 배포자 계정과 Cloud Build 서비스 계정에 다음 IAM 역할을 부여해야 합니다.
클릭하여 배포자 계정에 필요한 역할 보기
소스에서 빌드하고 배포하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
- 프로젝트에 대한 Cloud Run 소스 개발자(
roles/run.sourceDeveloper
) 역할 - 프로젝트에 대한 서비스 사용량 소비자(
roles/serviceusage.serviceUsageConsumer
) 역할 - Cloud Run 서비스 ID에 대한 서비스 계정 사용자(
roles/iam.serviceAccountUser
) 역할
Cloud Build 서비스 계정에 필요한 역할을 보려면 클릭
이 동작을 재정의하지 않는 한 Cloud Build는 자동으로 Compute Engine 기본 서비스 계정을 기본 Cloud Build 서비스 계정으로 사용하여 소스 코드와 Cloud Run 리소스를 빌드합니다. Cloud Build에서 소스를 빌드할 수 있게 하려면 관리자에게 프로젝트의 Compute Engine 기본 서비스 계정에 Cloud Run 빌더(roles/run.builder
)를 부여해 달라고 요청하세요.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
PROJECT_NUMBER
를 Google Cloud프로젝트 번호로, PROJECT_ID
를 Google Cloud프로젝트 ID로 바꿉니다. 프로젝트 ID와 프로젝트 번호를 찾는 방법에 대한 자세한 내용은 프로젝트 만들기 및 관리를 참조하세요.
Compute Engine 기본 서비스 계정에 Cloud Run 빌더 역할을 부여하면 전파되는 데 몇 분 정도 걸립니다.
Cloud Run과 연결된 IAM 역할 및 권한 목록은 Cloud Run IAM 역할 및 Cloud Run IAM 권한을 참조하세요. Cloud Run 서비스가 Cloud 클라이언트 라이브러리와 같은Google Cloud API와 상호작용하는 경우에는 서비스 ID 구성 가이드를 참조하세요. 역할 부여 방법에 대한 자세한 내용은 배포 권한 및 액세스 관리를 참조하세요.
비공개 풀로 빌드 보호
기본적으로 빌드 프로세스 중에 Cloud Build가 인터넷에 무제한으로 액세스할 수 있습니다. VPC 서비스 제어(VPC SC) 경계를 설정했고 빌드 액세스를 경계 내부에 저장된 종속 항목(예: npm 패키지)으로만 제한하려면 Cloud Build 비공개 작업자 풀 기능을 사용하면 됩니다.
일반적으로 비공개 풀을 설정할 때는 다음 단계를 따릅니다.
- 비공개 작업자 풀을 만듭니다. 비공개 풀 만들기 및 관리를 참조하세요.
VPC 서비스 제어 경계를 구성합니다. VPC 서비스 제어 사용을 참조하세요.
비공개 작업자 풀이 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 자세한 내용은 비공개 풀에서 빌드 실행을 참조하세요.
비공개 풀을 사용하여 빌드할 소스에서 서비스를 배포합니다.
gcloud
소스 코드에서 배포할 때 빌드할 비공개 풀을 지정하려면
--build-worker-pool
플래그를 사용합니다.gcloud run deploy SERVICE \ --source . \ --build-worker-pool WORKER_POOL
다음과 같이 바꿉니다.
- SERVICE를 서비스 이름으로 바꿉니다.
- WORKER_POOL을 비공개 풀의 이름으로 바꿉니다.
함수를 배포하는 경우 소스 코드의 함수 진입점과 함께
--function
플래그를 추가합니다.
빌드 작업자 풀 삭제
기존 서비스의 빌드 작업자 풀을 삭제할 수 있습니다.
gcloud
소스 배포에 사용할 Cloud Build 작업자 풀을 지우려면 --clear-build-worker-pool
플래그를 사용합니다.
gcloud run deploy SERVICE \ --source . \ --clear-build-worker-pool WORKER_POOL
다음과 같이 바꿉니다.
- SERVICE를 서비스 이름으로 바꿉니다.
- WORKER_POOL: 삭제하려는 비공개 풀의 이름
함수를 배포하는 경우 소스 코드의 함수 진입점과 함께 --function
플래그를 추가합니다.