本頁說明如何部署指標設定產生器 (MCG)。您可以選擇在本機執行 MCG 進行開發和測試,或是將 MCG 部署至雲端環境,供團隊存取。
取得原始碼
MCG 的原始碼託管於 sdv.googlesource.com 和 ,如要存取這些原始碼,必須按照「存取工具存放區」一文所述進行驗證。
如要存取原始碼,請複製 MCG 存放區:
git clone https://sdv.googlesource.com/external/mcg-external
在本機上執行
如要從來源目錄執行 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 專案,且具備佈建資源和 IAM 角色的足夠權限
- 已安裝 Terraform (1.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/ 目錄中,建立名為 terraform.tfvars 的檔案,為 variables.tf 中定義的變數提供值,並自訂部署作業。您需要在這個檔案中定義 project_id 和 region 的值,其他變數則為選用。在 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 設定。這個步驟會佈建所有必要的 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 Invoker (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>
您可以執行下列指令來取得服務網址。網址在各項部署作業中保持穩定。
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」。