Для использования платформы Cloud Telemetry Simulation необходимо развернуть инфраструктуру в вашем проекте Google Cloud.
Получите доступ к исходному коду
Исходный код платформы Cloud Telemetry Simulation размещен на GitHub в репозитории aaos-sdv-telemetry-simulator .
Предварительные требования
Для развертывания платформы необходимо выполнить следующие предварительные условия:
- Проект Google Cloud с включенной функцией выставления счетов .
- Безопасность веб-демоверсии: Если вы развертываете веб-демоверсию, необходимо настроить идентификатор клиента OAuth 2.0 в разделе Google Cloud APIs & Services > Credentials , чтобы защитить приложение App Engine и ограничить доступ только авторизованным учетным записям Google.
- Артефакты сборки программно-определяемого транспортного средства (SDV): Вам необходимы собственные скомпилированные образы SDV. В этом репозитории они не предоставляются.
-
cvd-host_package.tar.gz -
sdv_core_cf-img-<version>.zip
-
- Права доступа: У пользователя или учетной записи службы, запускающей Terraform, должны быть достаточные права для создания ресурсов, определенных в конфигурации (например, редактор проекта или пользовательская роль с правами доступа к Compute Engine, Cloud Functions, Identity and Access Management, Cloud Storage и другим необходимым службам).
- Инструменты:
- Интерфейс командной строки Google Cloud (
gcloud CLI) - Terraform (используемая версия из репозитория)
- Docker
- Go (используемая версия для функций оркестратора в репозитории)
- Интерфейс командной строки Google Cloud (
Разверните инфраструктуру Google Cloud.
Развертывание платформы моделирования включает два основных этапа: использование Terraform для развертывания основной инфраструктуры в Google Cloud и сборка и отправка образа Docker агента моделирования в реестр артефактов. В этом разделе описан процесс развертывания инфраструктуры.
Введите значения для следующих переменных, чтобы обновить фрагменты кода на этой странице:
Настройте бэкенд 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) image_fingerprints = { "latest" = "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "stable" = "sha256:88d4266fd4e6338d13b845fcf289579d209c897823b9217da3e161936f031589" } # Parallel Execution Limit (Default: 5) max_concurrent_simulations = 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 и отправляете в реестр артефактов.
Для создания и отправки образа агента моделирования:
Размещение артефактов: скопируйте файлы
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 и обновить карту
image_fingerprintsв файлеvariables.tfvars, а затем повторно запуститьterraform apply.# Get the digest using gcloud gcloud container images describe $AGENT_IMAGE --format="value(image_summary.digest)"Ваша платформа облачного телеметрического моделирования развернута и готова принимать запросы на моделирование.
Эксплуатация и устранение неполадок
Это решение позволяет использовать встроенные инструменты Google Cloud для мониторинга. Оно потребляет вычислительные ресурсы только за каждый запрос и во время выполнения моделирования.
Управление затратами
Архитектура разработана с учетом экономической эффективности за счет использования бессерверных и временных ресурсов. Основные факторы, определяющие затраты:
- Compute Engine: Оплата производится за время работы виртуальных машин для моделирования. Использование спотовых виртуальных машин может значительно снизить эти затраты.
- Облачные функции: оплата производится за каждый вызов.
- Облачное хранилище: оплата взимается за хранение входных и выходных файлов и журналов.
- Firestore: Оплата производится за операции чтения, записи и хранения данных.
Наблюдаемость
Все компоненты интегрированы с пакетом операционных инструментов Google Cloud.
- Logs Explorer: это ваш основной инструмент для устранения неполадок. Вы можете фильтровать журналы по ресурсу:
- Облачные функции: Для отладки проблем оркестровки проверьте журналы функций
receive-requestилиschedule-simulation. - Compute Engine: Проверьте журналы экземпляра виртуальной машины на наличие проблем при запуске или завершении работы.
- Агент симуляции: Агент, работающий внутри контейнера Docker, пересылает свои журналы в Logs Explorer. Для просмотра подробной информации о ходе симуляции используйте фильтр по имени экземпляра виртуальной машины.
- Облачные функции: Для отладки проблем оркестровки проверьте журналы функций
- Облачное хранилище: Для завершенных симуляций файлы
logcatиbugreportс устройства Cuttlefish загружаются в выходной каталог симуляции в хранилище Cloud Storage, что позволяет получить подробное представление о поведении среды Android.
Служебные счета
Terraform создает несколько учетных записей служб для обеспечения безопасной среды с минимальными привилегиями. Ключевые учетные записи служб включают:
Идентификатор выполнения (VM):
-
simulation-agent:- Подключено к: виртуальным машинам Compute Engine, на которых запущено моделирование.
- Роль: Позволяет виртуальной машине загружать результаты и сигнализировать о завершении.
- Права доступа:
-
roles/storage.objectUser: Считывает входные данные и загружает артефакты (журналы, отчеты) в облачное хранилище. -
roles/run.invoker: Проводит аутентификацию и вызывает функциюfinish-simulation.
-
-
Идентификаторы (функции) оркестровки:
-
read-simulations-function:- Прикреплено к: Облачной функции
read-simulation. - Права доступа:
-
roles/datastore.user: Считывает записи о симуляции и запущенных виртуальных машинах из Firestore.
-
- Прикреплено к: Облачной функции
receive-request-function:- Прикреплено к: Облачной функции
receive-request. - Права доступа:
-
roles/datastore.user: Создает новыеPENDINGзаписи моделирования в Firestore. -
roles/storage.objectUser: Проверяет наличие входных файлов в облачном хранилище.
-
- Прикреплено к: Облачной функции
scheduler-function:- Прикреплено к: Облачной функции
schedule-simulation. Права доступа:
- `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.
- Прикреплено к: Облачной функции
simulation-finisher-function:- Прилагается к: функции облачного
finish-simulation. - Права доступа: -
roles/compute.instanceAdmin.v1: Удаляет виртуальную машину после завершения выполнения. -roles/datastore.user: Обновляет статус моделирования наCOMPLETEDилиFAILED.
- Прилагается к: функции облачного
delete-simulation-function:- Прикреплено к: Облачной функции
delete-simulation. - Права доступа: -
roles/compute.instanceAdmin.v1: Принудительное удаление виртуальных машин при отмене. -roles/datastore.user: Обновление статуса отмененных заданий.
- Прикреплено к: Облачной функции
-
Идентификаторы триггеров:
scheduler-trigger:- Используется в: Eventarc (события) и триггерах Cloud Scheduler.
- Права доступа:
roles/eventarc.eventReceiverиroles/run.invokerдля запуска функций оркестратора.
cleanup-scheduler:- Используется: заданием cron планировщика облачных задач для очистки.
- Права доступа:
roles/run.invokerдля запуска логики очистки.
Управление политиками управления идентификацией и доступом для этих служебных учетных записей является основным способом контроля доступа и разрешений в системе.