部署作業

本頁面說明如何部署指標設定產生器 (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 程式碼集包含 Terraform 和 Google Cloud Build 檔案,可將 MCG 部署至 Google Cloud,做為 Google Cloud Run 服務。下列各節將引導您完成部署程序,包括建立變數檔案、部署基礎架構、建構及部署應用程式,以及授予存取權和驗證部署作業。

Cloud Run 是無伺服器平台,只會在處理要求時執行容器,而非全天候保持伺服器運作,因此可節省資源。這表示當容器執行個體在要求之間關閉時,記憶體內資料會遺失;因此,必須使用 Redis 為目錄資料提供永久儲存空間,以便在服務叫用之間使用。這種方法可提供可擴充的部署作業,適合團隊或正式環境使用。

必要條件

開始部署至 Google Cloud 之前,請確認您符合下列必要條件:

檔案結構

如要部署至 Google Cloud,請從 infrastructure/ 子目錄執行 Terraform 指令,並從存放區根目錄執行 Cloud Build 指令。您會用到的主要檔案和目錄如下:

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

建立 Terraform 變數檔案

在 infrastructure/ 目錄中建立名為 terraform.tfvars 的檔案,為 variables.tf 中定義的變數提供值,並自訂部署作業。您必須在這個檔案中定義 project_id 和 region 的值,其他變數則為選用。在 terraform.tfvars 中新增下列內容:

project_id        = "your-gcp-project-id"
region            = "your-gcp-region" # For example, us-central1 or europe-west1

如要查看所有可用變數及其預設值,請參閱 variables.tf。您可以在 terraform.tfvars 中設定預設值,覆寫預設值。

部署基礎架構

建立 terraform.tfvars 後,即可初始化並套用 Terraform 設定。這個步驟會佈建所有必要的 Google Cloud 資源,包括 Artifact Registry、Redis 和 Cloud Run。完成後,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=MEMBER_TYPE:EMAIL_ADDRESS \
  --role=roles/run.invoker \
  --region=your-gcp-region

您可以執行下列指令,取得服務網址。網址在部署作業之間保持穩定。

SERVICE_URL=$(gcloud run services describe mcg-service \
  --region your-gcp-region \
  --format='value(status.url)')

授予權限後,請呼叫服務的 /health 端點,確認服務正在執行且可存取。由於 Google Cloud Run 服務需要驗證,因此呼叫端點時,您必須在要求標頭中加入 gcloud 的授權權杖:

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

如果服務正在執行,這個指令會傳回 OK,您現在可以按照「呼叫 API」中的說明,呼叫任何 API 端點。