Essa plataforma exige que você implante a infraestrutura no seu projeto do Google Cloud.
Conseguir o código-fonte
O código-fonte da plataforma de simulação de telemetria do Cloud está hospedado em
sdv.googlesource.com, que exige autenticação conforme descrito em
Acessar repositórios de ferramentas.
Para acessar o código-fonte, clone o repositório de simulação de telemetria do Cloud:
git clone https://sdv.googlesource.com/external/cloud_telemetry_simulation-external
Pré-requisitos
Para implantar a plataforma, verifique se você atende aos seguintes pré-requisitos:
- Um projeto na nuvem do Google Cloud com o faturamento ativado.
- Segurança da demonstração na Web:se você implantar a demonstração na Web, será necessário configurar um ID de cliente OAuth 2.0 em APIs e serviços > Credenciais do Google Cloud para proteger o aplicativo do App Engine e restringir o acesso a contas do Google autorizadas.
- Artefatos de build do veículo definido por software (SDV):você precisa ter seus próprios artefatos de imagem do SDV compilados. Eles não são fornecidos neste repositório.
cvd-host_package.tar.gzsdv_core_cf-img-<version>.zip
- Permissões: o usuário ou a conta de serviço que executa o Terraform precisa ter permissões suficientes para criar os recursos definidos na configuração (por exemplo, Editor de projetos ou um papel personalizado com permissões para o Compute Engine, o Cloud Functions, o Identity and Access Management, o Cloud Storage e outros serviços necessários).
- Ferramentas:
- CLI do Google Cloud (
gcloud CLI) - Terraform (versão usada no repositório)
- Docker
- Go (versão usada para funções do orquestrador no repositório)
- CLI do Google Cloud (
Implantar a infraestrutura em nuvem do Google Cloud
A implantação da plataforma de simulação envolve duas etapas principais: usar o Terraform para implantar a infraestrutura principal no Google Cloud e criar e enviar a imagem Docker do agente de simulação para o Artifact Registry. Esta seção orienta você na implantação da infraestrutura.
Insira valores para as seguintes variáveis para atualizar os snippets de código nesta página:
Configurar o back-end do Terraform: Crie um arquivo chamado
environments/ENVIRONMENT/backend.hclpara especificar onde o Terraform armazena o arquivo de estado no Cloud Storage.# environments/ENVIRONMENT/backend.hcl bucket = "TF_BUCKET_NAME" prefix = "sdv-telemetry-simulation"Configurar variáveis de projeto: crie um arquivo chamado
environments/ENVIRONMENT/variables.tfvarscom os detalhes do seu projeto.# 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 = 5Aplicar a configuração do Terraform:navegue até o diretório
infrastructure, inicialize e aplique a configuração:# 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
Criar e enviar a imagem do agente de simulação
O agente de simulação executa a simulação na máquina virtual (VM) do Compute Engine. Ele é criado com seus artefatos do SDV e enviado para o Artifact Registry.
Para criar e enviar a imagem do agente de simulação:
Colocar artefatos: copie os arquivos
cvd-host_package.tar.gzesdv_core_cf-img-<version>.zippara o diretóriosimulation-agent/sdv-image-resources/.Criar e enviar:navegue até o diretório
simulation-agente crie e envie a imagem. Substitua o caminho da imagem pelo configurado no arquivovariables.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_IMAGEAtualizar impressões digitais:depois de enviar uma nova imagem, talvez seja necessário receber o resumo SHA256 dela e atualizar o mapa
image_fingerprintsno arquivovariables.tfvars. Em seguida, executeterraform applynovamente.# Get the digest using gcloud gcloud container images describe $AGENT_IMAGE --format="value(image_summary.digest)"Sua plataforma de simulação de telemetria do Cloud está implantada e pronta para aceitar solicitações de simulação.
Operações e solução de problemas
Essa solução permite usar as ferramentas integradas do Google Cloud para observabilidade. Ela consome recursos de computação apenas por solicitação e durante a execução da simulação.
Gerenciamento de custo
A arquitetura foi projetada para ser econômica usando recursos sem servidor e efêmeros. Os custos são impulsionados principalmente por:
- Compute Engine:cobrado pelo tempo em que as VMs de simulação estão em execução. O uso de VMs spot pode reduzir significativamente esse custo.
- Cloud Functions:cobrado por invocação.
- Cloud Storage:cobrado pelo armazenamento de arquivos de entrada e saída e registros.
- Firestore:cobrado por leituras, gravações e armazenamento de dados.
Observabilidade
Todos os componentes são integrados ao pacote de operações do Google Cloud.
- Análise de registros:essa é sua principal ferramenta para solucionar problemas. É possível filtrar registros por recurso:
- Cloud Functions:verifique os registros das funções
receive-requestouschedule-simulationpara depurar problemas de orquestração. - Compute Engine:verifique os registros de instâncias de VM para problemas de inicialização ou desligamento.
- Agente de simulação:o agente em execução no contêiner do Docker encaminha os registros para a Análise de registros. Filtre pelo nome da instância de VM para conferir o progresso detalhado da simulação.
- Cloud Functions:verifique os registros das funções
- Cloud Storage:para simulações concluídas, os arquivos
logcatebugreportdo dispositivo Cuttlefish são enviados para o diretório de saída da simulação no bucket do Cloud Storage, fornecendo insights detalhados sobre o comportamento do ambiente Android.
Contas de serviço
O Terraform cria várias contas de serviço para permitir um ambiente seguro e com privilégios mínimos. As principais contas de serviço incluem:
Identidade de execução (VM) :
simulation-agent:- Anexado a:as VMs do Compute Engine que executam a simulação.
- Papel:permite que a VM faça upload de resultados e sinalize a conclusão.
- Permissões:
roles/storage.objectUser: lê entradas e faz upload de artefatos (registros, relatórios) para o Cloud Storage.roles/run.invoker: autentica e invoca a funçãofinish-simulation.
Identidades de orquestração (funções) :
read-simulations-function:- Anexado a:a função do Cloud
read-simulation. - Permissões:
roles/datastore.user: lê registros de simulação e de VMs em execução no Firestore.
- Anexado a:a função do Cloud
receive-request-function:- Anexado a:a função do Cloud
receive-request. - Permissões:
roles/datastore.user: cria novos registros de simulaçãoPENDINGno Firestore.roles/storage.objectUser: verifica a existência de arquivos de entrada no Cloud Storage.
- Anexado a:a função do Cloud
scheduler-function:- Anexado a:a função do Cloud
schedule-simulation. Permissões :
- `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.
- Anexado a:a função do Cloud
simulation-finisher-function:- Anexado a:a função do Cloud
finish-simulation. - Permissões:
-
roles/compute.instanceAdmin.v1: exclui a VM após a conclusão da execução. -roles/datastore.user: atualiza o status da simulação paraCOMPLETEDouFAILED.
- Anexado a:a função do Cloud
delete-simulation-function:- Anexado a:a função do Cloud
delete-simulation. - Permissões:
-
roles/compute.instanceAdmin.v1: exclui máquinas virtuais à força durante o cancelamento. -roles/datastore.user: atualiza o status dos jobs cancelados.
- Anexado a:a função do Cloud
Acionar identidades :
scheduler-trigger:- Usado por:acionadores do Eventarc (eventos) e do Cloud Scheduler.
- Permissões:
roles/eventarc.eventReceivereroles/run.invokerpara acionar as funções do orquestrador.
cleanup-scheduler:- Usado por:o cron job do Cloud Scheduler para limpeza.
- Permissões:
roles/run.invokerpara acionar a lógica de limpeza.
O gerenciamento de políticas de gerenciamento de identidade e acesso para essas contas de serviço é a principal maneira de controlar o acesso e as permissões no sistema.