이 문서에서는 Cloud Run 서비스, Cloud Run 작업, Cloud Run 작업자 풀을 포함하여 애플리케이션을 배포하는 방법을 설명합니다.
Cloud Deploy를 사용하면 컨테이너 기반 워크로드를 모든 Cloud Run 서비스, 작업, 또는 작업자 풀에 배포할 수 있습니다. Cloud Run 서비스 또는 작업자 풀의 Cloud Run 대상에 배포할 때는 모든 Cloud Deploy 기능이 지원되지만 Cloud Run 작업에는 카나리아 배포가 지원되지 않습니다.
이 문서에서는 Cloud Run에 배포를 완료하기 위해 필요한 세 가지 기본 구성에 대해 설명합니다.
- 대상 구성 만들기
- Skaffold 구성 만들기
- Cloud Run 서비스 정의, 작업 정의 또는 작업자 풀 정의 만들기
제한사항
대상당 하나의 Cloud Run 서비스, 작업 또는 작업자 풀만 배포할 수 있습니다.
Cloud Run 작업에 대해 카나리아 배포 를 실행할 수 없습니다.
그러나 Cloud Run 서비스 및 작업자 풀은 카나리아 배포를 사용할 수 있습니다.
Cloud Deploy를 사용하여 Cloud Run 함수 를 배포하려면 CI 워크플로를 수정하여 함수를 컨테이너에 빌드하고 Cloud Run 서비스로 배포해야 합니다.
시작하기 전에
대상 구성 만들기
대상은 배포 파이프라인 YAML에서 구성하거나 별도의 파일에 포함할 수 있습니다. 또한 같은 파일에 대상을 2개 이상 구성할 수 있습니다.
대상은 배포 파이프라인과 동일한 프로젝트 및 리전에서 정의되어야 합니다. 하지만 대상이 배포되는 서비스, 작업 또는 작업자 풀은 서비스 계정이 해당 프로젝트에 액세스할 수 있는 한 다른 프로젝트 및 리전에 있을 수 있습니다.
대상 정의에서 run 스탠자를 만들어 Cloud Run 서비스가 생성되는 위치를 식별합니다.
대상 정의에서 Cloud Run 서비스, 작업 또는 작업자 풀을 지정하는 구문은 다음과 같습니다.
run:
location: projects/[project_name]/locations/[region_name]
이 리소스 식별자는 다음 요소를 사용합니다.
project_name은 Cloud Run 서비스, 작업 또는 작업자 풀이 생성될 Google Cloud 프로젝트의 이름입니다.이 작업을 대상마다 수행합니다. 각 Cloud Run 서비스, 작업 또는 작업자 풀에 다른 프로젝트를 사용하는 것이 좋습니다. 동일한 프로젝트에 둘 이상의 서비스, 작업 또는 작업자 풀을 사용하려면 Skaffold 프로필 을
skaffold.yaml구성 파일에서 사용해야 합니다.region_name은 서비스, 작업 또는 작업자 풀이 생성될 리전입니다. 서비스, 작업 또는 작업자 풀은 Cloud Run에서 지원하는 모든 리전에 있을 수 있습니다.
다음은 만들 Cloud Run 서비스, 작업 또는 작업자 풀을 정의하는 대상 구성의 예시입니다.
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: dev
description: development service
run:
location: projects/my-app/locations/us-central1
이 대상을 Cloud Deploy 배포 파이프라인 정의 내에서 또는 별도로 정의할 수 있습니다. 어느 쪽이든 Cloud Run 서비스, 작업 또는 작업자 풀을 배포할 출시 버전을 만들기 전에 대상을 등록해야 합니다.
Skaffold 구성 만들기
다음은 Cloud Run 배포의 예시 skaffold.yaml 파일입니다.
apiVersion: skaffold/v4beta7
kind: Config
metadata:
name: cloud-run-application
manifests:
rawYaml:
- service.yaml
deploy:
cloudrun: {}
이 skaffold.yaml 파일에서 각 항목의 의미는 다음과 같습니다.
manifests.rawYaml은 Cloud Run 서비스 정의의 이름을 제공합니다.이 예시에서
service.yaml은 Skaffold에서 배포할 Cloud Run 서비스를 정의하는 파일입니다. 이 파일 이름은 무엇이든 될 수 있지만 관례상 서비스의 경우service.yaml, 작업의 경우job.yaml, 작업자 풀의 경우workerpool.yaml입니다.deploy스탠자는 매니페스트를 배포하는 방법, 특히 프로젝트와 위치를 지정합니다.deploy필드는 필수 항목입니다.{}를 빈 상태로 두는 것이 좋습니다. Cloud Deploy는 대상 정의의 위치 및 프로젝트를 기반으로 렌더링 중에 값을 채웁니다.그러나 로컬 개발의 경우에는 여기에 값을 제공할 수 있습니다. 그러나 Cloud Deploy는 여기에 값이 제공되었는지 여부와 관계없이 항상 대상 정의의 프로젝트와 위치를 사용합니다.
Cloud Run 서비스 정의 만들기
Cloud Run 서비스 정의를 만들려면 직접 만들거나 기존 서비스에서 복사하면 됩니다. 이 섹션에서는 두 가지 방법을 모두 설명합니다.
옵션 1: 새 Cloud Run service.yaml 만들기
service.yaml은 Cloud Run 서비스를 정의합니다. 출시 버전을 만들 때 Skaffold는 이 정의를 사용하여 서비스를 배포합니다.
다음은 이에 대한 간단한 예시입니다.
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: [SERVICE_NAME]
spec:
template:
spec:
containers:
- image: [IMAGE_PATH]
각 항목의 의미는 다음과 같습니다.
[SERVICE_NAME]은 이 Cloud Run 서비스의 이름입니다.[IMAGE_PATH]는 이 서비스로 배포 중인 컨테이너 이미지를 가리킵니다.
옵션 2: 콘솔을 사용하여 기존 서비스에서 service.yaml 복사 Google Cloud
콘솔을 사용하여 서비스를 만들거나 기존 서비스를 사용하고
여기에서 service.yaml을 복사할 수 있습니다. Google Cloud
Google Cloud CLI를 사용하여 service.yaml을 가져오려면 다음 명령어를 실행합니다.
gcloud run services describe [service_name] --format=export
콘솔에서 service.yaml을(를) 가져오려면 다음 안내를 따르세요. Google Cloud
콘솔에서 Cloud Run 서비스 페이지로 이동합니다. Google Cloud
사용할 정의가 있는 기존 서비스를 선택합니다.
또는 새 서비스를 만들고 선택합니다. 서비스를 선택하면 서비스 세부정보 페이지가 표시됩니다.

YAML 탭을 선택합니다.
수정을 클릭한 후 YAML 콘텐츠를 파일 시스템의
service.yaml이라는 새 파일에 복사하여 출시 버전을 만들 때 Skaffold에서 이를 사용할 수 있도록 합니다.
Cloud Run 작업 정의 만들기
Cloud Run 작업 정의를 배포하려면 수동으로 만들거나 기존 작업에서 복사하면 됩니다. 이 섹션에서는 두 가지 방법을 모두 설명합니다.
Cloud Deploy에서 배포할 때 작업이 반드시 실행되는 것은 아닙니다. 이는 배포 후 애플리케이션을 실행하는 서비스와 다릅니다. 작업이 호출되는 방법은 작업 자체에 따라 달라집니다.
옵션 1: 새 Cloud Run job.yaml 만들기
job.yaml은 Cloud Run 작업을 정의합니다. 출시 버전을 만들 때 Skaffold는 이 정의를 사용하여 작업을 배포합니다.
다음은 이에 대한 간단한 예시입니다.
apiVersion: run.googleapis.com/v1
kind: Job
metadata:
name: [JOB_NAME]
spec:
template:
spec:
containers:
- image: [IMAGE_PATH]
각 항목의 의미는 다음과 같습니다.
[JOB_NAME]은 이 Cloud Run 작업의 이름입니다.[IMAGE_PATH]는 이 작업에 배포 중인 컨테이너 이미지를 가리킵니다.
옵션 2: 콘솔을 사용하여 기존 작업에서 job.yaml 복사 Google Cloud
콘솔을 사용하여 작업을 만들거나 기존 작업을 사용하고 여기에서 job.yaml을 복사할 수 있습니다. Google Cloud
Google Cloud CLI를 사용하여 job.yaml을 가져오려면 다음 명령어를 실행합니다.
gcloud run jobs describe [job_name] --format=export
콘솔에서 job.yaml을(를) Google Cloud 가져오려면 다음 안내를 따르세요.
콘솔에서 Cloud Run 작업 페이지로 이동합니다. Google Cloud
사용할 정의가 있는 기존 작업을 선택합니다.
또는 새 작업을 만들고 선택합니다. 작업을 선택하면 작업 세부정보 페이지가 표시됩니다.

YAML 탭을 선택합니다.
수정을 클릭한 후 YAML 콘텐츠를 파일 시스템의
job.yaml이라는 새 파일에 복사하여 출시 버전을 만들 때 Skaffold에서 이를 사용할 수 있도록 합니다.
Cloud Run 작업자 풀 정의 만들기
Cloud Run 작업자 풀 정의를 배포하려면 수동으로 만들거나 기존 작업자 풀에서 복사하면 됩니다. 이 섹션에서는 두 가지 방법을 모두 설명합니다.
옵션 1: 새 Cloud Run workerpool.yaml 만들기
workerpool.yaml은 Cloud Run 작업자 풀을 정의합니다. 출시 버전을 만들 때 Skaffold는 이 정의를 사용하여 작업자 풀을 배포합니다.
다음은 이에 대한 간단한 예시입니다.
apiVersion: run.googleapis.com/v1
kind: WorkerPool
metadata:
name: [WORKERPOOL_NAME]
annotations:
run.googleapis.com/launch-stage: BETA
spec:
template:
spec:
containers:
- image: [IMAGE_PATH]
각 항목의 의미는 다음과 같습니다.
[WORKERPOOL_NAME]은 이 Cloud Run 작업자 풀의 이름입니다.[IMAGE_PATH]는 이 작업자 풀에 배포 중인 컨테이너 이미지를 가리킵니다.
옵션 2: 콘솔을 사용하여 기존 작업자 풀에서 workerpool.yaml 복사 Google Cloud
콘솔을 사용하여 작업자 풀을 만들거나 기존 작업자 풀을 사용하고 여기에서 workerpool.yaml을 복사할 수 있습니다. Google Cloud
Google Cloud CLI를 사용하여 workerpool.yaml을 가져오려면 다음 명령어를 실행합니다.
gcloud beta run worker-pools describe [workerpool_name] --format=export
콘솔에서 workerpool.yaml을(를) 가져오려면 다음 안내를 따르세요. Google Cloud
콘솔에서 Cloud Run 작업자 풀 페이지로 이동합니다. Google Cloud
사용할 정의가 있는 기존 작업자 풀을 선택합니다.
또는 새 작업자 풀을 만들고 선택합니다. 작업자 풀을 선택하면 작업자 풀 세부정보 페이지가 표시됩니다.

YAML 탭을 선택합니다.
YAML 콘텐츠를 파일 시스템의
workerpool.yaml이라는 새 파일에 복사하여 출시 버전을 만들 때 Skaffold에서 이를 사용할 수 있도록 합니다.
요약 정리
Cloud Run 서비스, 작업 또는 작업자 풀 정의,
skaffold.yaml 구성, Cloud Deploy 대상
정의가 준비되었으며 Cloud Deploy 리소스로 대상을 등록했습니다. 이제 배포 파이프라인을 호출하여 출시 버전을 만들고 파이프라인에 정의된 대상의 진행 상황에 따라 진행할 수 있습니다.
빠른 시작 Cloud Deploy를 사용하여 Cloud Run에 앱 배포 에 모든 작업이 표시됩니다.
버전 간 서비스 동작
서비스를 다시 배포할 때 새 버전은 새로 배포된 service.yaml을 기반으로 합니다. 새로 배포된 YAML이 동일하지 않는 한 이전 버전은 유지됩니다. 예를 들어 이전 버전에 새 YAML에 없는 구성 설정이나 라벨이 있으면 해당 설정이나 라벨은 새 버전에 없습니다.
Cloud Run 작업 트리거
작업을 배포한 후 Cloud Run 문서의 설명대로 트리거하면 됩니다.
여러 프로젝트에 Cloud Run 서비스, 작업, 작업자 풀 배포
다른 프로젝트에 있는 서비스, 작업 또는 작업자 풀을 배포해야 하는 경우 실행 서비스 계정에 해당 서비스, 작업 또는 작업자 풀이 정의된 프로젝트에 액세스할 수 있는 권한이 필요합니다.
자세한 내용은 Cloud Deploy 실행 서비스 계정 및 Identity and Access Management 역할 및 권한 을 참조하세요.
Cloud Run Functions 배포
Cloud Run Functions는 함수가 배포될 때마다 소스 코드를 빌드합니다. 이로 인해 파이프라인의 각 대상 런타임에서 약간 다른 아티팩트를 가져올 수 있습니다. 이는 Cloud Deploy의 권장사항과 반대됩니다. 대신 Cloud Run 서비스를 직접 사용하는 것이 좋습니다. 이렇게 하면 단일 아티팩트를 빌드하고 환경 전반에서 승격할 수 있습니다.
Cloud Run 함수의
service.yaml을 체크인합니다.다음 명령어를 실행하여 가져올 수 있습니다.
gcloud run services describe FUNCTION_NAME \ --format=export \ --region=REGION \ --project=PROJECT다음 주석이 있으면 삭제합니다.
run.googleapis.com/build-base-imagerun.googleapis.com/build-namerun.googleapis.com/build-source-locationrun.googleapis.com/build-enable-automatic-updates
spec.spec.containers.image의 값을IMAGE_TAG로 바꿉니다.CI 프로세스에서 빌드 단계를 배포 단계와 분리합니다. Google Cloud CLI를 사용하여 함수를 배포하는 대신 다음 단계로 바꿉니다.
함수를 빌드 Cloud Build를 사용하여 컨테이너에 빌드합니다.
gcloud builds submit --pack image=REGION-docker.pkg.dev/PROJECT/cloud-run-source-deploy/IMAGE_NAME \ --project=PROJECT \ --region=REGION출시 버전을(를) Cloud Deploy를 사용하여 만듭니다.
gcloud deploy releases create RELEASE_NAME \ --project=DEPLOY_PROJECT \ --region=REGION \ --delivery-pipeline=DELIVERY_PIPELINE \ --images=IMAGE_TAG=REGION-docker.pkg.dev/PROJECT/cloud-run-source-deploy/IMAGE_NAME이 명령어에서
RELEASE_NAME은 출시 버전에 지정할 이름입니다. 이 배포 파이프라인의 모든 출시 버전에서 고유한 이름이어야 합니다.DEPLOY_PROJECT는 배포 파이프라인을 만든 프로젝트의 프로젝트 ID입니다.DELIVERY_PIPELINE은 대상이 진행되면서 이 출시 버전의 배포를 관리할 배포 파이프라인의 이름입니다. 이 이름은 파이프라인 정의의name필드와 일치해야 합니다.REGION은 출시 버전을 만드는 리전의 이름입니다(예:us-central1). 필수 항목입니다.IMAGE_NAME은 함수를 빌드할 때 이전 단계에서 이미지에 지정한 이름입니다.
다음 단계
빠른 시작: Cloud Run에 애플리케이션 배포 사용해 보기
Cloud Deploy 실행 환경 알아보기
Cloud Run용 Skaffold 지원 자세히 알아보기
Cloud Run 자세히 알아보기