Questa pagina descrive come eseguire il deployment di Metrics Configuration Generator (MCG).
Accedi al codice sorgente
Il codice sorgente di MCG è ospitato su GitHub, in aaos-sdv-telemetry-mcg. Puoi eseguire MCG localmente per lo sviluppo e il test o eseguirne il deployment in un ambiente cloud per l'accesso del team.
Esegui in locale
Per eseguire MCG dalla directory di origine per lo sviluppo e il test locali, utilizza Bazel. Bazel deve essere installato. Quando esegui localmente, devi abilitare la memorizzazione nella cache in memoria impostando MCG_LOCALCACHE=true. Questa opzione supporta l'archiviazione dei cataloghi dei segnali dei veicoli. Per creare ed eseguire il servizio localmente, utilizza i seguenti comandi dalla directory di origine:
# 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
Esegui il deployment su Google Cloud
La codebase MCG include file Terraform e Google Cloud Build per eseguire il deployment di MCG su Google Cloud come servizio Google Cloud Run. Le sezioni seguenti ti guideranno nella procedura di deployment, che include la creazione di un file di variabili, il deployment dell'infrastruttura, la creazione e il deployment dell'applicazione, la concessione dell'accesso e la verifica del deployment.
Poiché Cloud Run è una piattaforma serverless, conserva le risorse eseguendo i container solo durante l'elaborazione delle richieste, anziché mantenere un server attivo 24 ore su 24, 7 giorni su 7. Ciò significa che i dati in memoria vengono persi quando le istanze container vengono arrestate tra le richieste. Pertanto, è necessario Redis per fornire spazio di archiviazione permanente per i dati del catalogo tra le chiamate di servizio. Questo approccio fornisce un deployment scalabile adatto all'uso in team o in produzione.
Prerequisiti
Prima di iniziare il deployment su Google Cloud, verifica di soddisfare i seguenti prerequisiti:
- Un progetto Google Cloud con la fatturazione abilitata e autorizzazioni sufficienti per eseguire il provisioning delle risorse e dei ruoli IAM
- Terraform (versione 1.0.0 e successive) installato
- La Google Cloud CLI (
gcloud) installata e autenticata
Struttura dei file
Il deployment su Google Cloud prevede l'esecuzione dei comandi Terraform dalla sottodirectory infrastructure/ e dei comandi Cloud Build dalla radice del repository. I principali file e directory con cui interagisci sono:
repository-root/
├── cloudbuild.yaml
└── infrastructure/
└── terraform.tfvars <-- you create this file
Crea un file di variabili Terraform
Nella directory infrastructure/, crea un file denominato terraform.tfvars per
fornire i valori delle variabili definite in variables.tf e personalizzare il
deployment. In questo file devi definire i valori di project_id e region; tutte le altre variabili sono facoltative. Aggiungi quanto segue a 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
Consulta variables.tf per tutte le variabili disponibili e i relativi valori predefiniti. Puoi eseguire l'override dei valori predefiniti impostandoli in terraform.tfvars.
Esegui il deployment dell'infrastruttura
Dopo aver creato terraform.tfvars, puoi inizializzare e applicare la configurazione Terraform. Questo passaggio esegue il provisioning di tutte le risorse Google Cloud richieste,
tra cui Artifact Registry, Redis e Cloud Run. Al termine, Terraform crea il servizio Google Cloud Run, che esegue un'immagine container segnaposto.
Questo passaggio potrebbe richiedere alcuni minuti.
# Run from the infrastructure/ directory
terraform init
terraform apply
Quando ti viene richiesto da terraform apply, esamina il piano e digita yes per confermare.
Crea ed esegui il deployment dell'applicazione MCG
Dopo aver eseguito il provisioning dell'infrastruttura, il passaggio successivo consiste nel creare il codice sorgente MCG ed eseguirne il deployment su Google Cloud Run. A questo scopo, invia il codice sorgente a Google Cloud Build, che crea l'immagine Docker, ne esegue il push ad Artifact Registry e aggiorna il servizio Google Cloud Run in modo che utilizzi la nuova immagine.
Google Cloud Build utilizza la variabile di sostituzione COMMIT_SHA per taggare l'immagine creata. Puoi utilizzare un numero di versione (ad esempio v1.0.0) o lo SHA del commit del repository. L'aggiunta di tag ti aiuta a distinguere le versioni in Artifact Registry, a gestire i deployment e a eseguire il rollback a una versione precedente, se necessario.
Esegui il seguente comando gcloud per attivare la creazione e il 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)
Questo comando esegue il deployment iniziale del codice dell'applicazione. Per eseguire il deployment degli aggiornamenti del codice sorgente MCG, esegui di nuovo questo comando.
Concedi l'accesso e verifica il deployment
Per consentire agli utenti o ai service account di chiamare l'API MCG, devi concedere loro il
ruolo IAM Invocatore Cloud Run (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>
Puoi ottenere l'URL del servizio eseguendo il seguente comando. L'URL rimane stabile tra i deployment.
SERVICE_URL=$(gcloud run services describe mcg-service \
--region <var label="Google Cloud region">your-gcp-region</var> \
--format='value(status.url)')
Dopo aver concesso le autorizzazioni, verifica che il servizio sia in esecuzione e accessibile chiamando l'endpoint /health. Poiché i servizi Google Cloud Run richiedono l'autenticazione, devi includere un token di autorizzazione da gcloud nell'intestazione della richiesta quando chiami l'endpoint:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
$SERVICE_URL/health
Se il servizio è in esecuzione, questo comando restituisce OK e ora puoi chiamare uno qualsiasi
degli endpoint API come descritto in Chiamare l'API.