La plate-forme Cloud Telemetry Simulation nécessite que vous déployiez l'infrastructure dans votre projet Google Cloud.
Accéder au code source
Le code source de la plate-forme Cloud Telemetry Simulation est hébergé sur GitHub, dans aaos-sdv-telemetry-simulator.
Prérequis
Pour déployer la plate-forme, assurez-vous de remplir les conditions préalables suivantes :
- Un projet Google Cloud avec la facturation activée.
- Sécurité de la démonstration Web : si vous déployez la démonstration Web, vous devez configurer un ID client OAuth 2.0 dans Google Cloud API et services > Identifiants pour sécuriser l'application App Engine et limiter l'accès aux comptes Google autorisés.
- Artefacts de compilation de véhicule défini par logiciel (SDV) : vous devez disposer de vos propres artefacts d'image SDV compilés. Ils ne sont pas fournis dans ce dépôt.
cvd-host_package.tar.gzsdv_core_cf-img-<version>.zip
- Autorisations : l'utilisateur ou le compte de service exécutant Terraform doit disposer des autorisations suffisantes pour créer les ressources définies dans la configuration (par exemple, le rôle Éditeur de projet ou un rôle personnalisé avec des autorisations pour Compute Engine, Cloud Functions, Identity and Access Management, Cloud Storage et d'autres services nécessaires).
- Outils :
- Google Cloud CLI (
gcloud CLI) - Terraform (version utilisée dans le dépôt)
- Docker
- Go (version utilisée pour les fonctions d'orchestrateur dans le dépôt)
- Google Cloud CLI (
Déployer l'infrastructure Google Cloud
Le déploiement de la plate-forme de simulation comporte deux étapes principales : utiliser Terraform pour déployer l'infrastructure de base sur Google Cloud, puis créer et transférer l'image Docker de l'agent de simulation vers Artifact Registry. Cette section vous explique comment déployer l'infrastructure.
Saisissez les valeurs des variables suivantes pour mettre à jour les extraits de code de cette page :
Configurer le backend Terraform : créez un fichier pour spécifier où Terraform stocke son fichier d'état dans Cloud Storage. Nommez le fichier en utilisant la syntaxe suivante :
environments/ENVIRONMENT/backend.hcl# environments/ENVIRONMENT/backend.hcl bucket = "TF_BUCKET_NAME" prefix = "sdv-telemetry-simulation"Configurer les variables de projet : créez un fichier nommé avec les détails de votre projet. Nommez le fichier en utilisant la syntaxe suivante :
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) image_fingerprints = { "latest" = "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "stable" = "sha256:88d4266fd4e6338d13b845fcf289579d209c897823b9217da3e161936f031589" } # Parallel Execution Limit (Default: 5) max_concurrent_simulations = 5Appliquer la configuration Terraform : accédez au répertoire
infrastructure, puis initialisez et appliquez la configuration :# 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
Créer et transférer l'image de l'agent de simulation
L'agent de simulation exécute la simulation sur la machine virtuelle (VM) Compute Engine. Vous le créez avec vos artefacts SDV et le transférez vers Artifact Registry.
Pour créer et transférer l'image de l'agent de simulation :
Placer les artefacts : copiez vos fichiers
cvd-host_package.tar.gzetsdv_core_cf-img-<version>.zipdans le répertoiresimulation-agent/sdv-image-resources/.Créer et transférer : accédez au répertoire
simulation-agent, puis créez et transférez l'image. Remplacez le chemin d'accès de l'image par celui que vous avez configuré dans votre fichiervariables.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_IMAGEMettre à jour les empreintes : après avoir transféré une nouvelle image, vous devrez peut-être obtenir son condensé SHA256 et mettre à jour le mappage
image_fingerprintsdans votre fichiervariables.tfvars, puis réexécuterterraform apply.# Get the digest using gcloud gcloud container images describe $AGENT_IMAGE --format="value(image_summary.digest)"Votre plate-forme Cloud Telemetry Simulation est déployée et prête à accepter les requêtes de simulation.
Opérations et dépannage
Cette solution vous permet d'utiliser les outils intégrés de Google Cloud pour l'observabilité. Elle ne consomme des ressources de calcul que par requête et lors de l'exécution de la simulation.
Gestion des coûts
L'architecture est conçue pour être rentable en utilisant des ressources sans serveur et éphémères. Les coûts sont principalement déterminés par les éléments suivants :
- Compute Engine : facturé pour la durée d'exécution des VM de simulation. L'utilisation de VM Spot peut réduire considérablement ce coût.
- Cloud Functions : facturé par appel.
- Cloud Storage : facturé pour le stockage des fichiers d'entrée et de sortie, ainsi que des journaux.
- Firestore : facturé pour les lectures, les écritures et le stockage des données.
Observabilité
Tous les composants sont intégrés à la suite Google Cloud Operations.
- Explorateur de journaux : il s'agit de votre principal outil de dépannage. Vous pouvez filtrer les journaux par ressource :
- Cloud Functions : consultez les journaux des fonctions
receive-requestouschedule-simulationpour déboguer les problèmes d'orchestration. - Compute Engine : consultez les journaux des instances de VM pour détecter les problèmes de démarrage ou d'arrêt.
- Agent de simulation : l'agent exécuté dans le conteneur Docker transfère ses journaux vers l'explorateur de journaux. Filtrez par nom d'instance de VM pour afficher la progression détaillée de la simulation.
- Cloud Functions : consultez les journaux des fonctions
- Cloud Storage : pour les simulations terminées, les fichiers
logcatetbugreportde l'appareil Cuttlefish sont importés dans le répertoire de sortie de la simulation dans le bucket Cloud Storage, ce qui permet d'obtenir des informations détaillées sur le comportement de l'environnement Android.
Comptes de service
Terraform crée plusieurs comptes de service pour activer un environnement sécurisé avec le moindre privilège. Voici quelques-uns des principaux comptes de service :
Identité d'exécution (VM) :
simulation-agent:- Associé à : les VM Compute Engine exécutant la simulation.
- Rôle : permet à la VM d'importer les résultats et de signaler la fin de l'opération.
- Autorisations
roles/storage.objectUser: lit les entrées et importe les artefacts (journaux, rapports) dans Cloud Storage.roles/run.invoker: authentifie et appelle la fonctionfinish-simulation.
Identités d'orchestration (fonctions) :
read-simulations-function:- Associé à : la fonction Cloud
read-simulation. - Autorisations
roles/datastore.user: lit les enregistrements de simulation et de VM en cours d'exécution dans Firestore.
- Associé à : la fonction Cloud
receive-request-function:- Associé à : la fonction Cloud
receive-request. - Autorisations
roles/datastore.user: crée de nouveaux enregistrements de simulationPENDINGdans Firestore.roles/storage.objectUser: vérifie l'existence de fichiers d'entrée dans Cloud Storage.
- Associé à : la fonction Cloud
scheduler-function:- Associé à : la fonction Cloud
schedule-simulation. Autorisations :
- `roles/pubsub.subscriber`: Pulls messages from the simulation queue. - `roles/datastore.user`: Performs atomic reads and writes to the `running-vms` counter. - `roles/compute.instanceAdmin.v1`: Creates and starts Compute Engine VMs. - `roles/iam.serviceAccountUser`: This permission allows this function to assign the `simulation-agent` service account to the VMs it creates.
- Associé à : la fonction Cloud
simulation-finisher-function:- Associé à : la fonction Cloud
finish-simulation. - Autorisations
-
roles/compute.instanceAdmin.v1: supprime la VM une fois l'exécution terminée. -roles/datastore.user: met à jour l'état de la simulation surCOMPLETEDouFAILED.
- Associé à : la fonction Cloud
delete-simulation-function:- Associé à : la fonction Cloud
delete-simulation. - Autorisations
-
roles/compute.instanceAdmin.v1: supprime de force les machines virtuelles lors de l'annulation. -roles/datastore.user: met à jour l'état des jobs annulés.
- Associé à : la fonction Cloud
Identités de déclencheur :
scheduler-trigger:- Utilisé par : les déclencheurs Eventarc (événements) et Cloud Scheduler.
- Autorisations :
roles/eventarc.eventReceiveretroles/run.invokerpour déclencher les fonctions d'orchestrateur.
cleanup-scheduler:- Utilisé par : le job Cron Cloud Scheduler pour le nettoyage.
- Autorisations :
roles/run.invokerpour déclencher la logique de nettoyage.
La gestion des stratégies Identity and Access Management pour ces comptes de service est le principal moyen de contrôler l'accès et les autorisations au sein du système.