本页面介绍了如何部署 指标配置生成器 (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 之前,请确认您已满足以下前提条件:
- 已启用结算功能的 Google Cloud 项目,并且具有预配资源和 IAM 角色的足够权限
- 已安装 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 = "<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 端点。