本页面介绍了如何部署指标配置生成器 (MCG)。
访问源代码
MCG 的源代码托管在 GitHub 的 aaos-sdv-telemetry-mcg 中。 您可以在本地运行 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 Run 服务部署到 Google Cloud。以下部分将指导您完成部署过程,包括创建变量文件、部署基础设施、构建和部署应用,以及授予访问权限和验证部署。
由于 Cloud Run 是一个无服务器平台,因此它仅在处理请求时运行容器,而不是让服务器全天候保持活跃状态,从而节省资源。这意味着,当容器实例在请求之间关闭时,内存中的数据会丢失;因此,需要使用 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/ 目录中,创建一个名为 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 Invoker (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 端点。