La piattaforma di simulazione della telemetria cloud richiede il deployment dell'infrastruttura nel tuo progetto Google Cloud.
Accedi al codice sorgente
Il codice sorgente della piattaforma di simulazione della telemetria Cloud è ospitato su GitHub, in aaos-sdv-telemetry-simulator.
Prerequisiti
Per eseguire il deployment della piattaforma, assicurati di soddisfare i seguenti prerequisiti:
- Un progetto Google Cloud con la fatturazione abilitata.
- Sicurezza della demo web: se esegui il deployment della demo web, devi configurare un ID client OAuth 2.0 in API e servizi > Credenziali di Google Cloud per proteggere l'applicazione App Engine e limitare l'accesso agli Account Google autorizzati.
- Artefatti di build di Software Defined Vehicle (SDV): devi disporre dei tuoi artefatti di immagini SDV compilati. Questi non sono forniti in questo repository.
cvd-host_package.tar.gzsdv_core_cf-img-<version>.zip
- Autorizzazioni: l'utente o il service account che esegue Terraform deve disporre di autorizzazioni sufficienti per creare le risorse definite nella configurazione (ad esempio, Project Editor o un ruolo personalizzato con autorizzazioni per Compute Engine, Cloud Functions, Identity and Access Management, Cloud Storage e altri servizi necessari).
- Strumenti:
- Google Cloud CLI (
gcloud CLI) - Terraform (versione utilizzata nel repository)
- Docker
- Go (versione utilizzata per le funzioni dell'agente di orchestrazione nel repository)
- Google Cloud CLI (
Esegui il deployment dell'infrastruttura Google Cloud
Il deployment della piattaforma di simulazione prevede due passaggi principali: l'utilizzo di Terraform per eseguire il deployment dell'infrastruttura di base su Google Cloud e la creazione e il push dell'immagine Docker dell'agente di simulazione su Artifact Registry. Questa sezione ti guida nel deployment dell'infrastruttura.
Inserisci i valori per le seguenti variabili per aggiornare gli snippet di codice in questa pagina:
Configura il backend Terraform: crea un file per specificare dove Terraform archivia il proprio file di stato in Cloud Storage. Assegna un nome al file utilizzando questa sintassi:
environments/ENVIRONMENT/backend.hcl# environments/ENVIRONMENT/backend.hcl bucket = "TF_BUCKET_NAME" prefix = "sdv-telemetry-simulation"Configura le variabili di progetto: crea un file con i dettagli del progetto. Assegna un nome al file utilizzando questa sintassi:
environments/ENVIRONMENT/variables.tfvars# environments/ENVIRONMENT/variables.tfvars project_id = "PROJECT_ID" default_region = "REGION" default_zone = "ZONE" agent_docker_image = "REGION-docker.pkg.dev/PROJECT_ID/sim-agents/simulation-agent" # Security: Map logical tags to SHA256 digests # Security: Map logical tags to SHA256 digests (optional) supported_agent_builds = { "latest" = "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "stable" = "sha256:88d4266fd4e6338d13b845fcf289579d209c897823b9217da3e161936f031589" } # Parallel Execution Limit (Default: 5) max_vm_count = 5Applica la configurazione Terraform: vai alla directory
infrastructure, quindi inizializza e applica la configurazione:# Initialize Terraform with your backend configuration terraform init -backend-config=environments/ENVIRONMENT/backend.hcl # (Optional) Preview the changes terraform plan --var-file=environments/ENVIRONMENT/variables.tfvars # Apply the changes to deploy the infrastructure terraform apply --var-file=environments/ENVIRONMENT/variables.tfvars
Crea ed esegui il push dell'immagine dell'agente di simulazione
L'agente di simulazione esegue la simulazione sulla macchina virtuale (VM) di Compute Engine. La crei con gli artefatti SDV e ne esegui il push su Artifact Registry.
Per creare ed eseguire il push dell'immagine dell'agente di simulazione:
Posiziona gli artefatti: copia i file
cvd-host_package.tar.gzesdv_core_cf-img-<version>.zipnella directorysimulation-agent/sdv-image-resources/.Crea ed esegui il push: vai alla directory
simulation-agent, quindi crea ed esegui il push dell'immagine. Sostituisci il percorso dell'immagine con quello configurato nel filevariables.tfvars.# Example using the path from the .tfvars example above export AGENT_IMAGE="REGION-docker.pkg.dev/PROJECT_ID/sim-agents/simulation-agent:latest" # Build the image docker build -t $AGENT_IMAGE . # Push the image to Artifact Registry docker push $AGENT_IMAGEAggiorna le fingerprint: dopo aver eseguito il push di una nuova immagine, potresti dover recuperare il relativo digest SHA256 e aggiornare la mappa
supported_agent_buildsnel filevariables.tfvars, quindi eseguire nuovamenteterraform apply.# Get the digest using gcloud gcloud artifacts docker images describe $AGENT_IMAGE --format="value(image_summary.digest)"È stato eseguito il deployment della piattaforma di simulazione della telemetria cloud, che è pronta per accettare richieste di simulazione.
Operazioni e risoluzione dei problemi
Questa soluzione ti consente di utilizzare gli strumenti integrati di Google Cloud per l'osservabilità. Consuma risorse di calcolo solo per richiesta e durante l'esecuzione della simulazione.
Gestione dei costi
L'architettura è progettata per essere conveniente utilizzando risorse serverless ed temporanee. I costi sono principalmente determinati da:
- Compute Engine: viene addebitato il tempo di esecuzione delle VM di simulazione. L'utilizzo di VM spot può ridurre notevolmente questo costo.
- Cloud Functions: fatturazione per chiamata.
- Cloud Storage: i costi vengono addebitati per l'archiviazione di file e log di input e output.
- Firestore: la fatturazione si basa su letture, scritture e archiviazione dei dati.
Osservabilità
Tutti i componenti sono integrati con la suite operativa di Google Cloud.
- Esplora log: questo è lo strumento principale per la risoluzione dei problemi. Puoi filtrare i log in base alla risorsa:
- Cloud Functions: controlla i log delle funzioni
receive-requestoschedule-simulationper eseguire il debug dei problemi di orchestrazione. - Compute Engine: controlla i log delle istanze VM per individuare problemi di avvio o arresto.
- Agente di simulazione: l'agente in esecuzione all'interno del container Docker inoltra i propri log a Esplora log. Filtra in base al nome dell'istanza VM per visualizzare l'avanzamento dettagliato della simulazione.
- Cloud Functions: controlla i log delle funzioni
- Cloud Storage: per le simulazioni completate, i file
logcatebugreportdel dispositivo Cuttlefish vengono caricati nella directory di output della simulazione nel bucket Cloud Storage, fornendo informazioni approfondite sul comportamento dell'ambiente Android.
Service account
Terraform crea diversi service account per abilitare un ambiente sicuro con privilegi minimi. I service account principali includono:
Identità di esecuzione (VM):
simulation-agent:- Collegato a: le VM di Compute Engine che eseguono la simulazione.
- Ruolo: consente alla VM di caricare i risultati e segnalare il completamento.
- Autorizzazioni:
roles/storage.objectUser: legge gli input e carica gli artefatti (log, report) su Cloud Storage.roles/run.invoker: autentica e richiama la funzionefinish-simulation.
Identità di orchestrazione (funzioni):
read-simulations-function:- Collegato a: la funzione Cloud Functions
read-simulation. - Autorizzazioni:
roles/datastore.user: legge i record di simulazione e di VM in esecuzione in Firestore.
- Collegato a: la funzione Cloud Functions
receive-request-function:- Collegato a: la funzione Cloud Functions
receive-request. - Autorizzazioni:
roles/datastore.user: crea nuovi record di simulazionePENDINGin Firestore.roles/storage.objectUser: verifica l'esistenza dei file di input in Cloud Storage.
- Collegato a: la funzione Cloud Functions
scheduler-function:- Collegato a: la funzione Cloud Functions
schedule-simulation. - Autorizzazioni:
roles/pubsub.subscriber: estrae i messaggi dalla coda di simulazione.roles/datastore.user: esegue letture e scritture atomiche sul contatorerunning-vms.roles/compute.instanceAdmin.v1: crea e avvia le VM di Compute Engine.roles/iam.serviceAccountUser: consente a questa funzione di assegnare il service accountsimulation-agentalle VM che crea.
- Collegato a: la funzione Cloud Functions
simulation-finisher-function:- Collegato a: la funzione Cloud Functions
finish-simulation. - Autorizzazioni:
roles/compute.instanceAdmin.v1: elimina la VM al termine dell'esecuzione.roles/datastore.user: aggiorna lo stato della simulazione aCOMPLETEDoFAILED.
- Collegato a: la funzione Cloud Functions
delete-simulation-function:- Collegato a: la funzione Cloud Functions
delete-simulation. - Autorizzazioni:
roles/compute.instanceAdmin.v1: forza l'eliminazione delle macchine virtuali durante l'annullamento.roles/datastore.user: aggiorna lo stato dei job annullati.
- Collegato a: la funzione Cloud Functions
Identità trigger:
scheduler-trigger:- Utilizzato da: Trigger di Eventarc (eventi) e Cloud Scheduler.
- Autorizzazioni:
roles/eventarc.eventReceivereroles/run.invokerper attivare le funzioni dell'orchestratore.
cleanup-scheduler:- Utilizzato da: il cron job di Cloud Scheduler per la pulizia.
- Autorizzazioni:
roles/run.invokerper attivare la logica di pulizia.
La gestione delle policy di Identity and Access Management per questi service account è il modo principale per controllare l'accesso e le autorizzazioni all'interno del sistema.