Deployment

Halaman ini menjelaskan cara men-deploy Metrics Configuration Generator (MCG).

Mengakses kode sumber

Kode sumber MCG dihosting di GitHub, di aaos-sdv-telemetry-mcg. Anda dapat menjalankan MCG secara lokal untuk pengembangan dan pengujian, atau men-deploy-nya ke lingkungan cloud untuk akses tim.

Jalankan secara lokal

Untuk menjalankan MCG dari direktori sumbernya untuk pengembangan dan pengujian lokal, gunakan Bazel. Bazel harus diinstal. Anda harus mengaktifkan caching dalam memori dengan menyetel MCG_LOCALCACHE=true saat berjalan secara lokal. Hal ini mendukung penyimpanan Katalog Sinyal Kendaraan. Untuk mem-build dan menjalankan layanan secara lokal, gunakan perintah berikut dari direktori sumber:

# 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

Men-deploy ke Google Cloud

Codebase MCG mencakup file Terraform dan Google Cloud Build untuk men-deploy MCG ke Google Cloud sebagai layanan Google Cloud Run. Bagian berikut akan memandu Anda dalam proses deployment, yang mencakup pembuatan file variabel, men-deploy infrastruktur, membangun dan men-deploy aplikasi, serta memberikan akses dan memverifikasi deployment.

Karena merupakan platform serverless, Cloud Run menghemat resource dengan hanya menjalankan container saat memproses permintaan, bukan menjaga server tetap aktif 24/7. Artinya, data dalam memori akan hilang saat instance penampung dimatikan di antara permintaan. Oleh karena itu, Redis diperlukan untuk menyediakan penyimpanan persisten bagi data katalog di seluruh pemanggilan layanan. Pendekatan ini menyediakan deployment yang skalabel dan cocok untuk penggunaan tim atau produksi.

Prasyarat

Sebelum memulai deployment ke Google Cloud, pastikan Anda telah memenuhi prasyarat berikut:

Struktur file

Deployment ke Google Cloud melibatkan menjalankan perintah Terraform dari subdirektori infrastructure/ dan perintah Cloud Build dari root repositori. File dan direktori utama yang berinteraksi dengan Anda adalah:

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

Membuat file variabel Terraform

Di direktori infrastructure/, buat file bernama terraform.tfvars untuk memberikan nilai untuk variabel yang ditentukan dalam variables.tf dan menyesuaikan deployment Anda. Anda perlu menentukan nilai untuk project_id dan region dalam file ini; semua variabel lainnya bersifat opsional. Tambahkan kode berikut ke 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

Lihat variables.tf untuk semua variabel yang tersedia dan nilai defaultnya. Anda dapat mengganti nilai default dengan menyetelnya di terraform.tfvars.

Deploy infrastruktur

Setelah membuat terraform.tfvars, Anda dapat melakukan inisialisasi dan menerapkan konfigurasi Terraform. Langkah ini menyediakan semua resource Google Cloud yang diperlukan, termasuk Artifact Registry, Redis, dan Cloud Run. Setelah selesai, Terraform akan membuat layanan Google Cloud Run, yang menjalankan image container placeholder. Langkah ini mungkin memerlukan waktu beberapa menit.

# Run from the infrastructure/ directory
terraform init
terraform apply

Saat diminta oleh terraform apply, tinjau paket dan ketik yes untuk mengonfirmasi.

Membangun dan men-deploy aplikasi MCG

Setelah infrastruktur disediakan, langkah berikutnya adalah membuat kode sumber MCG dan men-deploy-nya ke Google Cloud Run. Hal ini dilakukan dengan mengirimkan kode sumber ke Google Cloud Build, yang akan membangun image Docker, mengirimkannya ke Artifact Registry, dan memperbarui layanan Google Cloud Run untuk menggunakan image baru.

Google Cloud Build menggunakan variabel substitusi COMMIT_SHA untuk memberi tag pada image yang dibangun. Anda dapat menggunakan nomor versi (misalnya, v1.0.0), atau SHA commit repositori Anda. Pemberian tag membantu Anda membedakan versi di Artifact Registry, mengelola deployment, dan melakukan roll back ke versi sebelumnya jika diperlukan.

Jalankan perintah gcloud berikut untuk memicu build dan deployment:

# 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)

Perintah ini melakukan deployment awal kode aplikasi. Untuk men-deploy update ke kode sumber MCG, jalankan perintah ini lagi.

Memberikan akses dan memverifikasi deployment

Agar pengguna atau akun layanan dapat memanggil MCG API, Anda harus memberi mereka peran IAM Cloud Run Invoker (roles/run.invoker):

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>

Anda bisa mendapatkan URL layanan dengan menjalankan perintah berikut. URL tetap stabil di seluruh deployment.

SERVICE_URL=$(gcloud run services describe mcg-service \
  --region <var label="Google Cloud region">your-gcp-region</var> \
  --format='value(status.url)')

Setelah memberikan izin, konfirmasi bahwa layanan berjalan dan dapat diakses dengan memanggil endpoint /health-nya. Karena layanan Google Cloud Run memerlukan autentikasi, Anda harus menyertakan token otorisasi dari gcloud di header permintaan saat memanggil endpoint:

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

Jika layanan berjalan, perintah ini akan menampilkan OK, dan Anda kini dapat memanggil endpoint API mana pun seperti yang dijelaskan dalam Memanggil API.