Cloud Run 서비스 또는 작업 배포

이 문서에서는 Cloud Run 서비스와 Cloud Run 작업을 포함하여 애플리케이션을 배포하는 방법을 설명합니다.

Cloud Deploy를 사용하면 컨테이너 기반 워크로드를 모든 Cloud Run 서비스작업에 배포할 수 있습니다. Cloud Run 서비스의 Cloud Run 대상에 배포할 때는 모든 Cloud Deploy 기능이 지원되지만 Cloud Run 작업에는 카나리아 배포가 지원되지 않습니다.

이 문서에서는 Cloud Run에 배포를 완료하기 위해 필요한 세 가지 기본 구성에 대해 설명합니다.

제한사항

  • 대상당 Cloud Run 서비스나 작업을 하나만 배포할 수 있습니다.

  • Cloud Run 작업에는 카나리아 배포를 실행할 수 없습니다.

    그러나 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.yaml 구성 파일에서 Skaffold 프로필을 사용해야 합니다.

  • [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입니다.

  • 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: Google Cloud 콘솔을 사용하여 기존 서비스에서 service.yaml 복사

Google Cloud 콘솔을 사용하여 서비스를 만들거나 기존 서비스를 사용하고 여기에서 service.yaml을 복사할 수 있습니다.

Google Cloud CLI를 사용하여 service.yaml를 가져오려면 다음 명령어를 수행합니다.

gcloud run services describe [service_name] --format=export

Google Cloud 콘솔에서 service.yaml을 가져오려면 다음 안내를 따르세요.

  1. Google Cloud 콘솔에서 Cloud Run 서비스 페이지로 이동합니다.

  2. 사용할 정의가 있는 기존 서비스를 선택합니다.

또는 새 서비스를 만들고 선택합니다. 서비스를 선택하면 서비스 세부정보 페이지가 표시됩니다.

YAML 탭을 보여주는 Google Cloud 콘솔 서비스 세부정보 페이지

  1. YAML 탭을 선택합니다.

  2. 수정을 클릭한 후 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: Google Cloud 콘솔을 사용하여 기존 작업에서 job.yaml 복사

Google Cloud 콘솔을 사용하여 작업을 만들거나 기존 작업을 사용하고 여기에서 job.yaml을 복사할 수 있습니다.

Google Cloud CLI를 사용하여 job.yaml를 가져오려면 다음 명령어를 수행합니다.

gcloud run jobs describe [job_name] --format=export

Google Cloud 콘솔에서 job.yaml을 가져오려면 다음 안내를 따르세요.

  1. Google Cloud 콘솔에서 Cloud Run 작업 페이지로 이동합니다.

  2. 사용할 정의가 있는 기존 작업을 선택합니다.

또는 새 서비스를 만들고 선택합니다. 작업을 선택하면 작업 세부정보 페이지가 표시됩니다.

YAML 탭을 보여주는 Google Cloud 콘솔의 작업 세부정보 페이지

  1. YAML 탭을 선택합니다.

  2. 수정을 클릭한 후 YAML 콘텐츠를 파일 시스템의 job.yaml이라는 새 파일에 복사하여 출시 버전을 만들 때 Skaffold에서 이를 사용할 수 있도록 합니다.

요약 정리

Cloud Run 서비스나 작업 정의, skaffold.yaml 구성, Cloud Deploy 대상 정의가 준비되었으며 Cloud Deploy 리소스로 대상을 등록했습니다. 이제 배포 파이프라인을 호출하여 출시 버전을 만들고 파이프라인에 정의된 대상의 진행 상황에 따라 진행할 수 있습니다.

빠른 시작 Cloud Deploy를 사용하여 Cloud Run에 앱 배포에 모든 작업이 표시됩니다.

버전 간 서비스 동작

서비스를 다시 배포할 때 새 버전은 새로 배포된 service.yaml을 기반으로 합니다. 새로 배포된 YAML이 동일하지 않는 한 이전 버전은 유지됩니다. 예를 들어 이전 버전에 새 YAML에 없는 구성 설정이나 라벨이 있으면 해당 설정이나 라벨은 새 버전에 없습니다.

여러 프로젝트에 Cloud Run 서비스 및 작업 배포

다른 프로젝트에 있는 서비스나 작업을 배포해야 하는 경우 실행 서비스 계정에 해당 서비스나 작업이 정의된 프로젝트에 액세스할 수 있는 권한이 필요합니다.

자세한 내용은 Cloud Deploy 실행 서비스 계정Identity and Access Management 역할 및 권한을 참조하세요.

다음 단계