소스 코드에서 배포

이 페이지에서는 --source 플래그와 함께 단일 gcloud CLI 명령어 gcloud run deploy를 사용하여 소스 코드에서 직접 Cloud Run에 새 서비스와 새 버전을 배포하는 방법을 설명합니다. Hello World 서비스 배포에 대한 둘러보기 예시는 소스에서 배포 빠른 시작을 참조하세요.

백그라운드에서 이 명령어는 Google Cloud 빌드팩 및 Cloud Build를 사용하여 머신에 Docker를 설치하거나 빌드팩 또는 Cloud Build를 설정할 필요 없이 소스 코드에서 자동으로 컨테이너 이미지를 빌드합니다. 즉, 위에서 설명한 단일 명령어에서는 gcloud builds submit 명령어와 gcloud run deploy 명령어가 필요한 작업을 수행합니다.

소스 배포에는 빌드된 컨테이너를 저장하기 위해 Artifact Registry가 사용됩니다. 배포하려는 리전에서 cloud-run-source-deploy이라는 Artifact Registry 저장소가 프로젝트에 아직 없으면 이 기능이 자동으로 cloud-run-source-deploy 이름의 Artifact Registry 저장소를 만듭니다.

소스 코드 디렉터리에 Dockerfile이 있으면 업로드된 소스 코드가 해당 Dockerfile을 사용하여 빌드됩니다. 소스 코드 디렉터리에 Dockerfile이 없으면 Google Cloud 빌드팩은 사용 중인 언어를 자동으로 감지하고 코드의 종속 항목을 가져와 Google에서 관리하는 안전한 기본 이미지를 사용하여 프로덕션에 즉시 사용 가능한 컨테이너 이미지를 만듭니다.

기본적으로 보안 수정사항은 서비스가 배포될 때만 적용됩니다. 서비스에 자동 보안 업데이트를 사용 설정하면 다운타임 없이 패치가 자동으로 수신됩니다. 보안 업데이트 구성에 대해 자세히 알아보세요.

지원 언어

소스에 Dockerfile을 사용하는 것 외에도 소스에서 배포할 때 다음과 같은 언어가 지원됩니다.

Google Cloud 빌드팩에서 지원하는 언어 버전에 대해 자세히 알아보세요.

제한된 기능

  • 소스에서 배포에 Artifact Registry가 사용되는 경우 이 기능은 Artifact Registry에서 지원되는 리전에서만 제공됩니다.
  • gcloud run deploy --source를 사용하여 소스에서 배포하는 기능은 편리하며 빌드를 완전히 맞춤설정하는 것을 방지합니다. 더욱 세부적으로 제어하려면 Cloud Build를 사용하여 컨테이너 이미지를 빌드한(예: gcloud builds submit 사용) 후 컨테이너 이미지를 배포합니다(예: gcloud run deploy --image 사용).
  • Google Cloud 빌드팩을 사용하여 소스에서 배포하면 소스 파일의 최종 수정 날짜가 1980년 1월 1일로 설정됩니다. 이는 빌드팩의 기본 동작이며 재현 가능한 빌드를 지원하도록 설계되었습니다. 언어 프레임워크에 따라 정적 파일의 브라우저 측 캐싱에 영향을 미칠 수 있습니다. 애플리케이션이 이에 영향을 받으면 애플리케이션에서 etagLast-Modified HTTP 헤더를 중지하는 것이 좋습니다.
  • Google Cloud 빌드팩을 사용하여 소스에서 배포하면 항상 gcr.io/buildpacks/builder:latest가 사용됩니다. latest에서 선호하는 언어나 OS 구성이 제공되지 않으면 특정 빌더를 사용하여 원하는 빌더로 애플리케이션 이미지를 만듭니다.
  • Kotlin 및 다른 JVM 언어(예: Java)를 사용하여 소스에서 서비스를 배포할 수 있습니다. 사용하는 언어는 다음 규칙을 준수해야 합니다.

    • Maven 또는 Gradle을 사용하여 애플리케이션을 빌드할 수 있습니다.
    • 빌드 파일에는 제품 클래스에 필요한 모든 플러그인이 포함되어 있습니다.

시작하기 전에

  • 설정 페이지의 설명대로 Cloud Run용 새 프로젝트를 설정했는지 확인합니다.
  • 프로젝트에서 인증되지 않은 호출을 제한하는 도메인 제한 조직 정책이 적용되는 경우 비공개 서비스 테스트의 설명대로 배포된 서비스에 액세스해야 합니다.

필요한 역할

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

Cloud Run과 연결된 IAM 역할 및 권한 목록은 Cloud Run IAM 역할Cloud Run IAM 권한을 참조하세요. Cloud Run 서비스가 Cloud 클라이언트 라이브러리와 같은 Google Cloud API와 상호작용하는 경우에는 서비스 ID 구성 가이드를 참조하세요. 역할 부여에 대한 자세한 내용은 배포 권한액세스 관리를 참조하세요.

Compute Engine 기본 서비스 계정에 Cloud Build 서비스 계정 역할 부여

  1. Cloud Run Admin API 및 Cloud Build API를 사용 설정합니다.

    gcloud services enable run.googleapis.com \
        cloudbuild.googleapis.com

    Cloud Run Admin API를 사용 설정하면 Compute Engine 기본 서비스 계정이 자동으로 생성됩니다.

  2. Cloud Build가 소스를 빌드할 수 있게 하려면 다음을 실행하여 Compute Engine 기본 서비스 계정에 Cloud Build 서비스 계정 역할을 부여합니다.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
        --role=roles/cloudbuild.builds.builder

    PROJECT_NUMBER를 Google Cloud 프로젝트 번호로, PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿉니다. 프로젝트 ID와 프로젝트 번호를 찾는 방법은 프로젝트 만들기 및 관리를 참조하세요.

    Compute Engine 기본 서비스 계정에 Cloud Build 서비스 계정 역할을 부여하려면 전파하는 데 몇 분 정도 걸립니다.

배포 중

소스 코드에서 배포하려면 다음 안내를 따르세요.

  1. 소스 디렉터리로 변경합니다. 소스 디렉터리에는 Dockerfile이 필요하지 않지만 Dockerfile이 있는 경우 사용됩니다.

  2. 애플리케이션을 빌드하고 배포합니다.

    gcloud run deploy SERVICE --source .

    SERVICE를 서비스에 사용할 이름으로 바꿉니다.

    메시지가 표시되면 y를 응답하여 필요한 API를 설치하도록 프롬프트에 응답합니다. 이 작업은 프로젝트에서 한 번만 수행하면 됩니다. 설정 페이지의 설명대로 이에 대한 기본값을 설정하지 않았으면 플랫폼과 리전을 제공하여 다른 프롬프트에 응답합니다.

  3. 빌드 및 배포가 완료될 때까지 기다립니다. 완료되면 다음과 비슷한 메시지가 표시됩니다.

    Service [my-app] revision [my-app-00000-xxx] has been deployed and is serving 100 percent of traffic. Service URL: https://my-app-texampleq-uc.a.run.app

    배포에 따라 이 서비스 버전은 트래픽을 100% 제공합니다.

소스에서 빌드 자동화

로컬 소스의 버전이 지정되지 않은 변경사항 적용을 방지하려면 Git 저장소에 변경사항을 푸시할 때 자동으로 배포하는 것이 좋습니다. 간편하게 이를 수행하도록 Cloud Run 서비스에 지속적 배포를 연결하고 구성할 수 있습니다. GitHub 저장소를 Cloud Run에 연결하면 Dockerfile 또는 빌드 파일을 작성하지 않고도 빌드를 구성하고 저장소를 배포할 수 있습니다.

자동 빌드를 구성하려면 연속 빌드 페이지에 설명된 대로 자동화를 설정하고 Buildpack으로 소스를 빌드하는 옵션을 선택해야 합니다.

다음 단계

새 서비스를 배포한 후에는 다음을 수행할 수 있습니다.

Cloud Build 트리거를 사용하여 Cloud Run 서비스의 빌드 및 배포를 자동화할 수 있습니다.