La plate-forme de simulation de télémétrie cloud nécessite que vous déployiez l'infrastructure sur 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 API et services > Identifiants de Google Cloud 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, É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 implique 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 guide tout au long du déploiement de l'infrastructure.
Saisissez des valeurs pour les variables suivantes afin de mettre à jour les extraits de code de cette page :
Configurer le backend Terraform : créez un fichier pour spécifier l'emplacement où Terraform stocke son fichier d'état dans Cloud Storage. Nommez le fichier à l'aide de la syntaxe suivante :
environments/ENVIRONMENT/backend.hcl# environments/ENVIRONMENT/backend.hcl bucket = "TF_BUCKET_NAME" prefix = "sdv-telemetry-simulation"Configurer les variables du 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) supported_agent_builds = { "latest" = "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "stable" = "sha256:88d4266fd4e6338d13b845fcf289579d209c897823b9217da3e161936f031589" } # Parallel Execution Limit (Default: 5) max_vm_count = 5Appliquez 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 la créez avec vos artefacts SDV et la 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 déployé une nouvelle image, vous devrez peut-être obtenir son condensé SHA256 et mettre à jour le mappage
supported_agent_buildsdans votre fichiervariables.tfvars, puis réexécuterterraform apply.# Get the digest using gcloud gcloud artifacts docker images describe $AGENT_IMAGE --format="value(image_summary.digest)"Votre plate-forme de simulation de télémétrie cloud 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é. Il ne consomme des ressources de calcul que par requête et pendant 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 facteurs 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 : facturation 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 : vérifiez les journaux des fonctions
receive-requestouschedule-simulationpour déboguer les problèmes d'orchestration. - Compute Engine : vérifiez les journaux d'instance 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 : vérifiez 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 fournit des informations détaillées sur le comportement de l'environnement Android.
Comptes de service
Terraform crée plusieurs comptes de service pour permettre un environnement sécurisé avec un accès minimal. Voici les principaux comptes de service :
Identité d'exécution (VM) :
simulation-agent:- Associé à : 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 des enregistrements de simulationPENDINGdans Firestore.roles/storage.objectUser: vérifie l'existence des fichiers d'entrée dans Cloud Storage.
- Associé à : la fonction Cloud
scheduler-function:- Associé à : la fonction Cloud
schedule-simulation. - Autorisations :
roles/pubsub.subscriber: extrait les messages de la file d'attente de simulation.roles/datastore.user: effectue des lectures et des écritures atomiques dans le compteurrunning-vms.roles/compute.instanceAdmin.v1: crée et démarre des VM Compute Engine.roles/iam.serviceAccountUser: permet à cette fonction d'attribuer le compte de servicesimulation-agentaux VM qu'elle crée.
- 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: force la suppression des machines virtuelles lors de l'annulation.roles/datastore.user: met à jour l'état des jobs annulés.
- Associé à : la fonction Cloud
Identités des déclencheurs :
scheduler-trigger:- Utilisé par : les déclencheurs Eventarc (événements) et Cloud Scheduler.
- Autorisations :
roles/eventarc.eventReceiveretroles/run.invokerpour déclencher les fonctions de l'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 IAM (Identity and Access Management) pour ces comptes de service est le principal moyen de contrôler les accès et les autorisations dans le système.