このページでは、Metrics Configuration Generator(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 時間 365 日アクティブに保つのではなく、リクエストの処理時にのみコンテナを実行することでリソースを節約します。つまり、リクエスト間でコンテナ インスタンスがシャットダウンされると、インメモリ データが失われます。そのため、サービス呼び出し間でカタログデータの永続ストレージを提供するには、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 構成を初期化して適用できます。このステップでは、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 に送信します。Google Cloud Build は Docker イメージをビルドして Artifact Registry に push し、新しいイメージを使用するように Google Cloud Run サービスを更新します。
Google Cloud Build は、COMMIT_SHA 置換変数を使用して、ビルドされたイメージにタグを付けます。バージョン番号(v1.0.0 など)またはリポジトリの commit 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
サービス URL を取得するには、次のコマンドを実行します。URL はデプロイ間で安定しています。
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 エンドポイントを呼び出すことができます。