Orchestrazione cloud in OmniLab ATS

L'app Cloud Orchestration offre un modo scalabile e ad alte prestazioni per gestire le istanze Cuttlefish, in particolare per i dispositivi virtuali basati su ARM (CHD). OmniLab ATS supporta Cloud Orchestration, quindi puoi eseguire test su dispositivi virtuali. Prima di iniziare a utilizzare i dispositivi virtuali, segui le istruzioni riportate in OmniLab Android Test Station per installare OmniLab ATS.

Panoramica

Cloud Orchestration consente a OmniLab ATS di delegare la gestione delle istanze Cuttlefish a un servizio Cloud Orchestrator dedicato. Questo approccio offre diversi vantaggi rispetto alle modalità locali e remote esistenti, pur mantenendo un'esperienza utente familiare:

  • Avvio parallelo delle istanze: consente di avviare più istanze Cuttlefish contemporaneamente, riducendo significativamente il tempo di overhead prima dell'inizio dei test.
  • Scalabilità: adatta ad ambienti di test su larga scala.
  • Isolamento delle risorse: disaccoppia l'ambiente di esecuzione dei test (worker ATS) dall'ambiente di emulazione del dispositivo.

Prerequisiti

  • Una macchina host in grado di eseguire Docker
  • Accesso alle immagini Docker di orchestrazione Cuttlefish

Configurare il servizio Cloud Orchestrator

Il servizio Cloud Orchestrator gestisce il ciclo di vita delle istanze Cuttlefish. Puoi eseguire il deployment del servizio in vari ambienti e supporta le architetture x86 e ARM:

  • Stesso host del worker ATS: viene eseguito in un container Docker sulla stessa macchina
  • Macchina separata: viene eseguito su un server on-premise in grado di eseguire Docker
  • Istanza cloud: viene eseguito su una macchina virtuale in un ambiente cloud, ad esempio Google Compute Engine

Installare e configurare il servizio

Segui le istruzioni riportate nel file README di Cloud Android Orchestration per avviare il servizio.

Autenticazione e autorizzazioni

Se il servizio Cloud Orchestrator è in esecuzione su una macchina remota, assicurati che l'host del worker ATS disponga delle autorizzazioni necessarie per accedervi tramite richieste HTTP. Se la connessione HTTP non è consentita, potrebbe essere necessario configurare l'inoltro della porta SSH. Per maggiori dettagli, vedi Provare Cloud Orchestrator.

Stato previsto

Dopo l'avvio del servizio Cloud Orchestrator, dovrebbe essere raggiungibile tramite HTTP. Puoi verificarne lo stato eseguendo una query sulla relativa API:

  • Esegui il ping del servizio: dovresti essere in grado di raggiungere l'endpoint del servizio dall'host del worker OmniLab ATS. Ad esempio, l'esecuzione di curl -I http://localhost:8080/v1/zones/local/hosts dovrebbe restituire una risposta HTTP riuscita (ovvero HTTP/1.1 200 OK o un reindirizzamento 302 Found a /username), a conferma che il servizio è attivo e raggiungibile.

Configurare OmniLab ATS per Cloud Orchestration

Prima di avviare OmniLab ATS, assicurati che tutte le istanze Cuttlefish sull'host del worker OmniLab ATS siano arrestate. OmniLab ATS avvia e arresta automaticamente i dispositivi virtuali durante il ciclo di test e le istanze Cuttlefish esistenti sono in conflitto con le istanze gestite da OmniLab ATS. Per informazioni dettagliate sull'arresto delle istanze Cuttlefish, vedi Arrestare Cuttlefish.

Per attivare Cloud Orchestration in OmniLab ATS, passa flag specifici all'avvio di OmniLab ATS:

mtt start --use_cloud_orchestrator \
  --orchestration_service_url=http://HOST:PORT \
  --max_local_virtual_devices N \
  --use_host_network \
  --force_ats_version 2 \
  --force_update
  • --use_cloud_orchestrator: attiva la funzionalità Cloud Orchestration.
  • --orchestration_service_url: specifica l'URL su cui è in ascolto il servizio Cloud Orchestration, ad esempio http://localhost:8080.
  • --max_local_virtual_devices: imposta il numero massimo di dispositivi virtuali che OmniLab ATS può allocare contemporaneamente. Il numero predefinito è 0.
  • --use_host_network: utilizza lo spazio dei nomi di rete dell'host per il container. È necessario per accedere al servizio Cloud Orchestration.
  • --force_ats_version 2: forza l'utilizzo di OmniLab ATS 2.0, necessario per Cloud Orchestration. Per ulteriori informazioni, consulta la Guida all'upgrade di OmniLab ATS 2.0.
  • --force_update: esegue il pull della build del container più recente con le funzionalità ATS 2.0 e Cloud Orchestration.

Eseguire un test con dispositivi orchestrati dal cloud

Questa sezione descrive i passaggi per eseguire un test su dispositivi virtuali orchestrati dal cloud.

Selezionare i dispositivi

Nell'elenco dei dispositivi, OmniLab ATS mostra i dispositivi virtuali orchestrati dal cloud come segnaposto anziché i numeri di serie effettivi. I segnaposto vengono visualizzati nel formato di HOSTNAME:PORT (ad esempio, thehostname:6520). Gli stati sono Disponibile o Allocato. Un segnaposto nello stato Disponibile indica che il dispositivo virtuale non è in esecuzione e può essere allocato per il test.

Seleziona Dispositivi orchestrati dal cloud

Figura 1. Selezione di dispositivi virtuali orchestrati dal cloud.

Aggiungere azioni dei dispositivi

Quando viene pianificato un test su questi dispositivi, ATS aggiunge automaticamente le azioni dei dispositivi necessarie per eseguire il provisioning e gestire le istanze Cuttlefish durante il ciclo di test.

Azioni dispositivo automatiche

Figura 2. Azioni automatiche dei dispositivi.

Impostare le risorse di test

Quando pianifichi un test, devi fornire le risorse di test richieste. Nella sezione Imposta risorse di test, assicurati di mappare i file caricati ai nomi delle risorse corretti:

  • Mappa il pacchetto di strumenti host, ad esempio cvd-host_package.tar.gz, al nome cvd_host_package.
  • Mappa lo zip dell'immagine del dispositivo al nome cvd_device_image.

Risorse di test per l'orchestrazione cloud

Figura 3. Mappatura delle risorse di test.

Visualizzare le esecuzioni e i log dei test

Al termine del test, puoi visualizzare i log nella sezione dei file di output. I log specifici raccolti per le istanze gestite da Cloud Orchestrator includono:

  • launcher.log: log del launcher Cuttlefish
  • kernel.log: log del kernel Android standard