표준 환경의 App Engine 앱을 Cloud Run에 배포

리전 ID

REGION_ID는 앱을 만들 때 선택한 리전을 기준으로 Google에서 할당하는 축약된 코드입니다. 일부 리전 ID는 일반적으로 사용되는 국가 및 주/도 코드와 비슷하게 표시될 수 있지만 코드는 국가 또는 주/도와 일치하지 않습니다. 2020년 2월 이후에 생성된 앱의 경우 REGION_ID.r이 App Engine URL에 포함됩니다. 이 날짜 이전에 만든 기존 앱의 경우 URL에서 리전 ID는 선택사항입니다.

리전 ID에 대해 자세히 알아보세요.

이 가이드에서는 Google Cloud CLI를 사용하여 표준 환경에서 Cloud Run에 앱을 배포하는 방법을 설명합니다. 이 안내는 App Engine 기존 번들 서비스를 사용하지 않는 2세대 런타임에 적용됩니다.

Cloud Run은 App Engine 표준 환경과 거의 동일한 인프라를 사용하므로 플랫폼 간에 많은 유사점이 있습니다. Cloud Run으로 마이그레이션할 때의 이점을 포함하여 App Engine과 Cloud Run 간의 유사점과 차이점을 자세히 알아보려면 비교 요약을 참고하세요.

gcloud beta app migrate 명령어를 사용하여 Cloud Run에 배포하려면 다음 전략 중 하나를 선택하세요.

시작하기 전에

  1. App Engine 소스 코드에 액세스할 수 있고 App Engine 애플리케이션이 오류 없이 실행되는지 확인합니다.

  2. Cloud Run Admin API 및 Artifact Registry API를 사용 설정합니다.

    API 사용 설정

  3. 다음 명령어를 사용하여 프로젝트와 리전을 구성합니다.

    gcloud auth login
    gcloud config set project PROJECT_ID
    gcloud config set run/region REGION
    gcloud components update
    

    다음을 바꿉니다.

    • PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿉니다.
    • REGION을 리전으로 바꿉니다.
  4. 애플리케이션에서 호환되지 않는 기능을 검토하고 Cloud Run으로 이전하기 전에 삭제합니다. 기존 애플리케이션에 호환되지 않는 기능이 있으면 이전 프로세스가 중지되고 비호환성이 나열됩니다.

  5. Cloud Run의 다음과 같은 차이점을 검토하세요.

    • Cloud Run은 특정 서비스에 변경사항을 배포하는 각 시점을 나타내는 데 Version 대신 Revision이라는 용어를 사용합니다. Cloud Run의 서비스에 앱을 처음으로 배포하면 첫 번째 버전이 생성됩니다. 이후에 서비스를 배포할 때마다 다른 버전이 생성됩니다. Cloud Run에 배포하는 방법을 자세히 알아보세요.

    • gcloud CLI 또는 Google Cloud 콘솔을 사용하여 소스 코드를 Cloud Run에 배포하면 앱 설정을 구성하고 관리할 수 있습니다. Cloud Run에는 파일 기반 구성이 필요하지 않지만 YAML 구성이 지원됩니다.

    • Cloud Run에 배포하는 모든 서비스는 URL의 run.app 도메인을 사용하여 서비스에 공개적으로 액세스합니다.

    • 기본적으로 공개되는 App Engine 서비스와 달리 Cloud Run 서비스는 기본적으로 비공개이며 공개(미인증) 액세스를 위해서는 별도 구성이 필요합니다.

필요한 역할

새 서비스 계정을 만들 수도 있고, App Engine에서 사용 중인 것과 동일한 사용자 관리형 서비스 계정을 Cloud Run에서 사용할 수도 있습니다. 개발자 또는 관리자가 배포자 계정과 Cloud Build 서비스 계정에 다음 IAM 역할을 부여해야 합니다.

클릭하여 배포자 계정에 필요한 역할 보기

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

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 구성 가이드를 참조하세요. 역할 부여에 대한 자세한 내용은 배포 권한액세스 관리를 참조하세요.

app.yaml 파일 사용

다음 명령어를 실행하여 App Engine app.yaml 파일을 Cloud Run 서비스로 변환합니다.

gcloud beta app migrate-to-run --appyaml=PATH --entrypoint=ENTRYPOINT

다음을 바꿉니다.

  • PATHapp.yaml 파일의 경로로 바꿉니다.
  • ENTRYPOINT을 애플리케이션의 진입점 명령어로 바꿉니다.

프로젝트 디렉터리에 있는 경우 PATHENTRYPOINT 인수는 모두 선택사항입니다.

gcloud beta app migrate-to-run 명령어와 함께 사용할 수 있는 인수에 대한 자세한 내용은 gcloud beta app migrate-to-run를 참고하세요.

기존 App Engine 애플리케이션 배포

다음 명령어를 실행하여 기존 App Engine 앱을 Cloud Run에 직접 배포합니다.

gcloud beta app migrate-to-run --service=SERVICE --version=VERSION --entrypoint=ENTRYPOINT

이 명령어는 소스 코드 디렉터리의 상대 경로를 지정하라는 메시지를 표시합니다.

다음을 바꿉니다.

  • SERVICE를 App Engine 서비스의 이름으로 바꿉니다.
  • VERSION: 서비스의 버전 ID로 바꿉니다.
  • ENTRYPOINT을 애플리케이션의 진입점 명령어로 바꿉니다. 프로젝트 디렉터리에 있는 경우 이 인수는 선택사항입니다.

gcloud beta app migrate 명령어와 함께 사용할 수 있는 인수에 대한 자세한 내용은 gcloud beta app migrate-to-run를 참고하세요.

호환되지 않는 기능

app.yaml 파일에 지원되지 않는 다음 구성이 포함되어 있으면 마이그레이션 명령어가 실패합니다.

  • 인바운드 서비스:

    inbound_services:
    - warmup
    
  • 맞춤 오류 페이지:

    error_handlers:
    - file: default_error.html
    - error_code: over_quota
      file: over_quota.html
    
  • 2세대 런타임용 번들 서비스:

    app_engine_apis: true
    
  • 빌드 환경 변수:

    build_env_variables:
      Foo: Bar
    
  • 1세대 런타임:

    runtime: python27
    

다음 단계