소스 코드를 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 소스 개발자(
roles/run.sourceDeveloper
) -
서비스 계정 사용자(
roles/iam.serviceAccountUser
)
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
소스 코드에서 배포할 때 빌드할 비공개 풀을 지정하려면 다음 안내를 따르세요.
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: 삭제하려는 비공개 풀의 이름