La plataforma de Cloud Telemetry Simulation requiere que implementes la infraestructura en tu proyecto de Google Cloud.
Accede al código fuente
El código fuente de la plataforma de Cloud Telemetry Simulation se aloja en GitHub, en aaos-sdv-telemetry-simulator.
Requisitos previos
Para implementar la plataforma, asegúrate de cumplir con los siguientes requisitos:
- Un proyecto de Google Cloud con la facturación habilitada.
- Seguridad de la demostración web: Si implementas la demostración web, debes configurar un ID de cliente de OAuth 2.0 en APIs y servicios > Credenciales de Google Cloud para proteger la aplicación de App Engine y restringir el acceso a las Cuentas de Google autorizadas.
- Artefactos de compilación de vehículos definidos por software (SDV): Debes tener tus propios
artefactos de imagen de SDV compilados. No se proporcionan en este repositorio.
cvd-host_package.tar.gzsdv_core_cf-img-<version>.zip
- Permisos: La cuenta de servicio o el usuario que ejecuta Terraform debe tener permisos suficientes para crear los recursos definidos en la configuración (por ejemplo, Editor de proyectos o un rol personalizado con permisos para Compute Engine, Cloud Functions, Identity and Access Management, Cloud Storage y otros servicios necesarios).
- Herramientas:
- Google Cloud CLI (
gcloud CLI) - Terraform (versión usada en el repositorio)
- Docker
- Go (versión usada para las funciones de Orchestrator en el repositorio)
- Google Cloud CLI (
Implementa la infraestructura de Google Cloud
La implementación de la plataforma de simulación implica dos pasos principales: usar Terraform para implementar la infraestructura principal en Google Cloud y compilar y enviar la imagen de Docker del agente de simulación a Artifact Registry. En esta sección, se te guiará para implementar la infraestructura.
Ingresa valores para las siguientes variables para actualizar los fragmentos de código en esta página:
Configura el backend de Terraform: Crea un archivo para especificar dónde Terraform almacena su archivo de estado en Cloud Storage. Asigna un nombre al archivo con esta sintaxis:
environments/ENVIRONMENT/backend.hcl# environments/ENVIRONMENT/backend.hcl bucket = "TF_BUCKET_NAME" prefix = "sdv-telemetry-simulation"Configura las variables del proyecto: Crea un archivo con el nombre de los detalles de tu proyecto. Asigna un nombre al archivo con la siguiente sintaxis:
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 = 5Aplica la configuración de Terraform: Navega al directorio
infrastructure, inicializa y aplica la configuración:# 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
Compila y envía la imagen del agente de simulación
El agente de simulación ejecuta la simulación en la máquina virtual (VM) de Compute Engine. La compilas con tus artefactos de SDV y la envías a Artifact Registry.
Para compilar y enviar la imagen del agente de simulación, haz lo siguiente:
Coloca los artefactos: Copia tus archivos
cvd-host_package.tar.gzysdv_core_cf-img-<version>.zipen el directoriosimulation-agent/sdv-image-resources/.Compila y envía: Navega al directorio
simulation-agenty, luego, compila y envía la imagen. Reemplaza la ruta de acceso de la imagen por la que configuraste en tu archivovariables.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_IMAGEActualiza las huellas digitales: Después de enviar una imagen nueva, es posible que debas obtener su resumen SHA256 y actualizar el mapa
supported_agent_buildsen tu archivovariables.tfvarsy, luego, volver a ejecutarterraform apply.# Get the digest using gcloud gcloud artifacts docker images describe $AGENT_IMAGE --format="value(image_summary.digest)"Tu plataforma de simulación de telemetría de Cloud está implementada y lista para aceptar solicitudes de simulación.
Operaciones y solución de problemas
Esta solución te permite usar las herramientas integradas de Google Cloud para la observabilidad. Consume recursos de procesamiento solo por solicitud y durante la ejecución de la simulación.
Administración de costos
La arquitectura está diseñada para ser rentable mediante el uso de recursos efímeros y sin servidores. Los costos se deben principalmente a lo siguiente:
- Compute Engine: Se factura por el tiempo que se ejecutan las VMs de simulación. El uso de VMs Spot puede reducir este costo de forma significativa.
- Cloud Functions: Se factura por invocación.
- Cloud Storage: Se factura por almacenar archivos y registros de entrada y salida.
- Firestore: Se factura por las lecturas, las escrituras y el almacenamiento de datos.
Observabilidad
Todos los componentes están integrados en Google Cloud’s operations suite.
- Explorador de registros: Es tu herramienta principal para solucionar problemas. Puedes
filtrar los registros por recurso:
- Cloud Functions: Revisa los registros de las funciones
receive-requestoschedule-simulationpara depurar problemas de organización. - Compute Engine: Revisa los registros de instancias de VM para detectar problemas de inicio o cierre.
- Agente de simulación: El agente que se ejecuta dentro del contenedor de Docker reenvía sus registros al Explorador de registros. Filtra por el nombre de la instancia de VM para ver el progreso detallado de la simulación.
- Cloud Functions: Revisa los registros de las funciones
- Cloud Storage: En el caso de las simulaciones completadas, los archivos
logcatybugreportdel dispositivo Cuttlefish se suben al directorio de salida de la simulación en el bucket de Cloud Storage, lo que proporciona información detallada sobre el comportamiento del entorno de Android.
Cuentas de servicio
Terraform crea varias cuentas de servicio para habilitar un entorno seguro con privilegios mínimos. Estas son algunas de las cuentas de servicio clave:
Identidad de ejecución (VM):
simulation-agent:- Conectado a: Las VMs de Compute Engine que ejecutan la simulación.
- Rol: Permite que la VM suba los resultados y señale la finalización.
- Permisos:
roles/storage.objectUser: Lee las entradas y sube los artefactos (registros, informes) a Cloud Storage.roles/run.invoker: Autentica e invoca la funciónfinish-simulation.
Identidades de organización (funciones):
read-simulations-function:- Adjunto a: Es la Cloud Function
read-simulation. - Permisos:
roles/datastore.user: Lee los registros de simulación y de VM en ejecución en Firestore.
- Adjunto a: Es la Cloud Function
receive-request-function:- Adjunto a: Es la Cloud Function
receive-request. - Permisos:
roles/datastore.user: Crea registros de simulación dePENDINGnuevos en Firestore.roles/storage.objectUser: Verifica la existencia de archivos de entrada en Cloud Storage.
- Adjunto a: Es la Cloud Function
scheduler-function:- Adjunto a: Es la Cloud Function
schedule-simulation. - Permisos:
roles/pubsub.subscriber: Extrae mensajes de la cola de simulación.roles/datastore.user: Realiza lecturas y escrituras atómicas en el contadorrunning-vms.roles/compute.instanceAdmin.v1: Crea y, además, inicia VMs de Compute Engine.roles/iam.serviceAccountUser: Permite que esta función asigne la cuenta de serviciosimulation-agenta las VMs que crea.
- Adjunto a: Es la Cloud Function
simulation-finisher-function:- Adjunto a: Es la Cloud Function
finish-simulation. - Permisos:
roles/compute.instanceAdmin.v1: Borra la VM después de que se completa la ejecución.roles/datastore.user: Actualiza el estado de la simulación aCOMPLETEDoFAILED.
- Adjunto a: Es la Cloud Function
delete-simulation-function:- Adjunto a: Es la Cloud Function
delete-simulation. - Permisos:
roles/compute.instanceAdmin.v1: Fuerza la eliminación de las máquinas virtuales durante la cancelación.roles/datastore.user: Actualiza el estado de los trabajos cancelados.
- Adjunto a: Es la Cloud Function
Identidades de activadores:
scheduler-trigger:- Se usa en: Eventarc (eventos) y activadores de Cloud Scheduler.
- Permisos:
roles/eventarc.eventReceiveryroles/run.invokerpara activar las funciones de organización.
cleanup-scheduler:- Lo usa: El trabajo cron de Cloud Scheduler para la limpieza.
- Permisos:
roles/run.invokerpara activar la lógica de limpieza.
Administrar las políticas de Identity and Access Management para estas cuentas de servicio es la forma principal de controlar el acceso y los permisos dentro del sistema.