Чтобы использовать платформу Cloud Telemetry Simulation, вам нужно развернуть инфраструктуру в проекте Google Cloud.
Как получить доступ к исходному коду
Исходный код платформы Cloud Telemetry Simulation размещен на GitHub в репозитории aaos-sdv-telemetry-simulator.
Требования
Чтобы развернуть платформу, убедитесь, что вы соответствуете следующим требованиям:
- Проект Google Cloud с включенными платежными функциями.
- Безопасность веб-демо. Если вы развертываете веб-демо, вам необходимо настроить идентификатор клиента OAuth 2.0 в Google Cloud (API и сервисы > Учетные данные), чтобы защитить приложение App Engine и ограничить доступ к авторизованным аккаунтам Google.
- Артефакты сборки программно-определяемого автомобиля (SDV). У вас должны быть собственные скомпилированные артефакты образа SDV. Они не предоставляются в этом хранилище.
cvd-host_package.tar.gzsdv_core_cf-img-<version>.zip
- Разрешения. У пользовательского или сервисного аккаунта, запускающего Terraform, должно быть достаточно разрешений для создания ресурсов, определенных в конфигурации (например, Редактор проекта или настраиваемая роль с разрешениями для Compute Engine, Cloud Functions, Identity and Access Management, Cloud Storage и других необходимых сервисов).
- Инструменты:
- Google Cloud CLI (
gcloud CLI) - Terraform (используемая версия в репозитории)
- Docker
- Go (используемая версия для функций оркестратора в хранилище)
- Google Cloud CLI (
Развертывание облачной инфраструктуры Google Cloud
Развертывание платформы симуляции состоит из двух основных этапов: развертывание базовой инфраструктуры в Google Cloud с помощью Terraform, а также создание и отправка образа Docker агента симуляции в Artifact Registry. В этом разделе вы узнаете, как развернуть инфраструктуру.
Чтобы обновить фрагменты кода на этой странице, введите значения следующих переменных:
Настройте серверную часть Terraform. Создайте файл, чтобы указать, где Terraform хранит свой файл состояния в Cloud Storage. Назовите файл, используя следующий синтаксис:
environments/ENVIRONMENT/backend.hcl# environments/ENVIRONMENT/backend.hcl bucket = "TF_BUCKET_NAME" prefix = "sdv-telemetry-simulation"Настройте переменные проекта. Создайте файл с информацией о проекте. Назовите файл, используя следующий синтаксис:
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 = 5Примените конфигурацию Terraform. Перейдите в каталог
infrastructure, а затем инициализируйте и примените конфигурацию:# 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
Создайте и отправьте образ агента симуляции
Агент симуляции запускает симуляцию на виртуальной машине Compute Engine. Вы создаете его с помощью артефактов SDV и отправляете в Artifact Registry.
Чтобы создать и отправить образ агента симуляции, выполните следующие действия:
Разместите артефакты. Скопируйте файлы
cvd-host_package.tar.gzиsdv_core_cf-img-<version>.zipв каталогsimulation-agent/sdv-image-resources/.Сборка и отправка. Перейдите в каталог
simulation-agent, а затем соберите и отправьте образ. Замените путь к изображению на тот, который вы указали в файлеvariables.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_IMAGEОбновите цифровые отпечатки. После отправки нового образа вам может потребоваться получить его дайджест SHA256 и обновить сопоставление
supported_agent_buildsв файлеvariables.tfvars, а затем повторно запуститьterraform apply.# Get the digest using gcloud gcloud artifacts docker images describe $AGENT_IMAGE --format="value(image_summary.digest)"Платформа Cloud Telemetry Simulation развернута и готова принимать запросы на симуляцию.
Операции и устранение неполадок
Это решение позволяет использовать встроенные инструменты Google Cloud для наблюдаемости. Вычислительные ресурсы используются только для обработки запросов и выполнения моделирования.
Управление расходами
Архитектура разработана с учетом экономической эффективности за счет использования бессерверных и временных ресурсов. Основные причины расходов:
- Compute Engine. Оплата взимается за время работы виртуальных машин, на которых выполняется моделирование. Использование виртуальных машин Spot может значительно снизить эти расходы.
- Cloud Functions. Оплата за вызов.
- Cloud Storage. Плата взимается за хранение входных и выходных файлов и журналов.
- Firestore. Оплата за чтение, запись и хранение данных.
Наблюдаемость
Все компоненты интегрированы с пакетом операций Google Cloud.
- Просмотр журналов. Это основной инструмент для устранения неполадок. Вы можете отфильтровать журналы по ресурсу:
- Cloud Functions. Проверьте журналы функций
receive-requestилиschedule-simulation, чтобы устранить неполадки с оркестрацией. - Compute Engine. Проверьте журналы экземпляров виртуальных машин на наличие проблем с запуском или завершением работы.
- Агент симуляции. Агент, работающий внутри контейнера Docker, пересылает свои журналы в Logs Explorer. Чтобы посмотреть подробные сведения о ходе симуляции, отфильтруйте данные по названию экземпляра виртуальной машины.
- Cloud Functions. Проверьте журналы функций
- Cloud Storage. Файлы
logcatиbugreportс устройства Cuttlefish загружаются в выходной каталог симуляции в сегменте Cloud Storage. Это позволяет получить подробные сведения о поведении среды Android.
Сервисные аккаунты
Terraform создает несколько сервисных аккаунтов, чтобы обеспечить безопасную среду с минимальными привилегиями. Ключевые сервисные аккаунты:
Идентификационные данные для выполнения (виртуальная машина):
simulation-agent:- Подключено к: виртуальным машинам Compute Engine, на которых выполняется симуляция.
- Роль. Позволяет виртуальной машине загружать результаты и сигнализировать о завершении.
- Разрешения:
roles/storage.objectUser– считывает входные данные и загружает артефакты (журналы, отчеты) в Cloud Storage.roles/run.invoker– выполняет аутентификацию и вызывает функциюfinish-simulation.
Идентификаторы оркестрации (функции):
read-simulations-function:- Прикреплено к: функция Cloud Functions
read-simulation. - Разрешения:
roles/datastore.user: чтение записей о симуляции и запущенных виртуальных машинах в Firestore.
- Прикреплено к: функция Cloud Functions
receive-request-function:- Прикреплено к: функция Cloud Functions
receive-request. - Разрешения:
roles/datastore.user– создает новые записи симуляцииPENDINGв Firestore.roles/storage.objectUser– проверяет наличие входных файлов в Cloud Storage.
- Прикреплено к: функция Cloud Functions
scheduler-function:- Прикреплено к: функция Cloud Functions
schedule-simulation. - Разрешения:
roles/pubsub.subscriber: извлекает сообщения из очереди симуляции.roles/datastore.user: выполняет атомарные операции чтения и записи в счетчикrunning-vms.roles/compute.instanceAdmin.v1: создает и запускает виртуальные машины Compute Engine.roles/iam.serviceAccountUser– позволяет этой функции назначать сервисный аккаунтsimulation-agentсоздаваемым виртуальным машинам.
- Прикреплено к: функция Cloud Functions
simulation-finisher-function:- Прикреплено к: функция Cloud Functions
finish-simulation. - Разрешения:
roles/compute.instanceAdmin.v1– удаляет виртуальную машину после завершения выполнения.roles/datastore.user– обновляет статус симуляции доCOMPLETEDилиFAILED.
- Прикреплено к: функция Cloud Functions
delete-simulation-function:- Прикреплено к: функция Cloud Functions
delete-simulation. - Разрешения:
roles/compute.instanceAdmin.v1– принудительно удаляет виртуальные машины во время отмены.roles/datastore.user– обновляет статус отмененных заданий.
- Прикреплено к: функция Cloud Functions
Идентификаторы триггеров:
scheduler-trigger:- Используется: триггерами Eventarc (события) и Cloud Scheduler.
- Разрешения:
roles/eventarc.eventReceiverиroles/run.invokerдля запуска функций оркестратора.
cleanup-scheduler:- Используется: заданием cron Cloud Scheduler для очистки.
- Разрешения:
roles/run.invokerдля запуска логики очистки.
Управление политиками Identity and Access Management для этих сервисных аккаунтов – основной способ контроля доступа и разрешений в системе.