배포

이 페이지에서는 측정항목 구성 생성기 (MCG)를 배포하는 방법을 설명합니다.

소스 코드 액세스

MCG의 소스 코드는 GitHub의 aaos-sdv-telemetry-mcg에 호스팅됩니다. 개발 및 테스트를 위해 MCG를 로컬로 실행하거나 팀 액세스를 위해 클라우드 환경에 배포할 수 있습니다.

로컬에서 실행

로컬 개발 및 테스트를 위해 소스 디렉터리에서 MCG를 실행하려면 Bazel을 사용하세요. Bazel이 설치되어 있어야 합니다. 로컬에서 실행할 때는 MCG_LOCALCACHE=true를 설정하여 인메모리 캐싱을 사용 설정해야 합니다. 이는 차량 신호 카탈로그의 저장을 지원합니다. 서비스를 로컬에서 빌드하고 실행하려면 소스 디렉터리에서 다음 명령어를 사용하세요.

# Build and run on default port 8005
MCG_LOCALCACHE=true bazel run //:mcg

# Or, to change the port, use:
MCG_LOCALCACHE=true bazel run //:mcg -- --listen :9000

Google Cloud에 배포

MCG 코드베이스에는 MCG를 Google Cloud Run 서비스로 Google Cloud에 배포하기 위한 Terraform 및 Google Cloud Build 파일이 포함되어 있습니다. 다음 섹션에서는 변수 파일 생성, 인프라 배포, 애플리케이션 빌드 및 배포, 액세스 권한 부여 및 배포 확인을 포함한 배포 프로세스를 안내합니다.

Cloud Run은 서버리스 플랫폼이므로 서버를 24시간 활성 상태로 유지하는 대신 요청을 처리할 때만 컨테이너를 실행하여 리소스를 절약합니다. 즉, 요청 간에 컨테이너 인스턴스가 종료되면 인메모리 데이터가 손실되므로 서비스 호출 간에 카탈로그 데이터의 영구 스토리지를 제공하려면 Redis가 필요합니다. 이 접근 방식은 팀 또는 프로덕션에 적합한 확장 가능한 배포를 제공합니다.

기본 요건

Google Cloud에 배포하기 전에 다음 기본 요건을 충족하는지 확인하세요.

  • 결제가 사용 설정되어 있고 리소스와 IAM 역할을 프로비저닝할 수 있는 충분한 권한이 있는 Google Cloud 프로젝트
  • Terraform (v1.0.0 이상)이 설치되어 있어야 합니다.
  • Google Cloud CLI (gcloud)가 설치되고 인증됨

파일 구조

Google Cloud에 배포하려면 infrastructure/ 하위 디렉터리에서 Terraform 명령어를 실행하고 저장소 루트에서 Cloud Build 명령어를 실행해야 합니다. 상호작용하는 기본 파일과 디렉터리는 다음과 같습니다.

repository-root/
├── cloudbuild.yaml
└── infrastructure/
    └── terraform.tfvars  <-- you create this file

Terraform 변수 파일 만들기

infrastructure/ 디렉터리에서 variables.tf에 정의된 변수 값을 제공하고 배포를 맞춤설정하는 terraform.tfvars 파일을 만듭니다. 이 파일에서 project_idregion 값을 정의해야 합니다. 다른 모든 변수는 선택사항입니다. terraform.tfvars에 다음을 추가합니다.

project_id        = "<var label="Google Cloud project ID">your-gcp-project-id</var>"
region            = "<var label="Google Cloud region">your-gcp-region</var>" # For example, us-central1 or europe-west1

사용 가능한 모든 변수와 기본값은 variables.tf를 참고하세요. terraform.tfvars에서 값을 설정하여 기본값을 재정의할 수 있습니다.

인프라 배포하기

terraform.tfvars를 만든 후 Terraform 구성을 초기화하고 적용할 수 있습니다. 이 단계에서는 Artifact Registry, Redis, Cloud Run을 비롯한 모든 필수 Google Cloud 리소스를 프로비저닝합니다. 완료되면 Terraform에서 자리표시자 컨테이너 이미지를 실행하는 Google Cloud Run 서비스를 만듭니다. 이 단계는 몇 분 정도 걸릴 수 있습니다.

# Run from the infrastructure/ directory
terraform init
terraform apply

terraform apply의 메시지가 표시되면 계획을 검토하고 yes를 입력하여 확인합니다.

MCG 애플리케이션 빌드 및 배포

인프라가 프로비저닝되면 다음 단계는 MCG 소스 코드를 빌드하고 Google Cloud Run에 배포하는 것입니다. 이는 소스 코드를 Google Cloud Build에 제출하여 Docker 이미지를 빌드하고, Artifact Registry에 푸시하고, 새 이미지를 사용하도록 Google Cloud Run 서비스를 업데이트하는 방식으로 이루어집니다.

Google Cloud Build는 COMMIT_SHA 대체 변수를 사용하여 빌드된 이미지에 태그를 지정합니다. 버전 번호 (예: v1.0.0) 또는 저장소의 커밋 SHA를 사용할 수 있습니다. 태그를 사용하면 Artifact Registry에서 버전을 구분하고, 배포를 관리하고, 필요한 경우 이전 버전으로 롤백할 수 있습니다.

다음 gcloud 명령어를 실행하여 빌드 및 배포를 트리거합니다.

# Run from the repository root
#
# The command tags the image with the Git commit SHA.
# To tag with a version number, replace '$(git rev-parse --short HEAD)' with the version number.
gcloud builds submit . \
  --config=cloudbuild.yaml \
  --substitutions=COMMIT_SHA=$(git rev-parse --short HEAD)

이 명령어는 애플리케이션 코드의 초기 배포를 실행합니다. MCG 소스 코드에 업데이트를 배포하려면 이 명령어를 다시 실행하세요.

액세스 권한 부여 및 배포 확인

사용자 또는 서비스 계정이 MCG API를 호출하도록 하려면 Cloud Run 호출자 (roles/run.invoker) IAM 역할을 부여해야 합니다.

gcloud run services add-iam-policy-binding mcg-service \
  --member=<var label="member type, e.g. user or serviceAccount">MEMBER_TYPE</var>:<var label="email address of member">EMAIL_ADDRESS</var> \
  --role=roles/run.invoker \
  --region=<var label="Google Cloud region">your-gcp-region</var>

다음 명령어를 실행하여 서비스 URL을 가져올 수 있습니다. URL은 배포 전반에서 안정적으로 유지됩니다.

SERVICE_URL=$(gcloud run services describe mcg-service \
  --region <var label="Google Cloud region">your-gcp-region</var> \
  --format='value(status.url)')

권한을 부여한 후 /health 엔드포인트를 호출하여 서비스가 실행 중이고 액세스할 수 있는지 확인합니다. Google Cloud Run 서비스에는 인증이 필요하므로 엔드포인트를 호출할 때 요청 헤더에 gcloud의 인증 토큰을 포함해야 합니다.

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
  $SERVICE_URL/health

서비스가 실행 중이면 이 명령어는 OK를 반환하며 이제 API 호출에 설명된 대로 API 엔드포인트를 호출할 수 있습니다.