OmniLab ATS의 클라우드 오케스트레이션

Cloud Orchestration 앱은 특히 ARM 기반 가상 기기 (CHD)의 경우 Cuttlefish 인스턴스를 관리하는 확장 가능한 고성능 방법을 제공합니다. OmniLab ATS는 가상 기기에서 테스트를 실행할 수 있도록 클라우드 오케스트레이션을 지원합니다. 가상 기기 사용을 시작하기 전에 OmniLab Android 테스트 스테이션에 따라 OmniLab ATS를 설치합니다.

개요

클라우드 오케스트레이션을 사용하면 OmniLab ATS가 Cuttlefish 인스턴스 관리를 전용 클라우드 오케스트레이터 서비스에 위임할 수 있습니다. 이 접근 방식은 기존 로컬 및 원격 모드에 비해 다음과 같은 여러 이점을 제공하면서도 친숙한 사용자 환경을 유지합니다.

  • 병렬 인스턴스 실행: 여러 Cuttlefish 인스턴스를 동시에 실행할 수 있어 테스트 시작 전 오버헤드 시간이 크게 줄어듭니다.
  • 확장성: 대규모 테스트 환경에 적합합니다.
  • 리소스 격리: 테스트 실행 환경 (ATS 작업자)을 기기 에뮬레이션 환경에서 분리합니다.

기본 요건

  • Docker를 실행할 수 있는 호스트 머신
  • Cuttlefish 오케스트레이션 Docker 이미지 액세스

Cloud Orchestrator 서비스 설정

Cloud Orchestrator 서비스는 Cuttlefish 인스턴스의 수명 주기를 관리합니다. 다양한 환경에 서비스를 배포할 수 있으며 x86 및 ARM 아키텍처를 모두 지원합니다.

  • ATS 작업자와 동일한 호스트: 동일한 머신의 Docker 컨테이너에서 실행됩니다.
  • 별도 머신: Docker를 실행할 수 있는 온프레미스 서버에서 실행됩니다.
  • 클라우드 인스턴스: 클라우드 환경(예: Google Compute Engine)의 가상 머신에서 실행됩니다.

서비스 설치 및 설정

Cloud Android Orchestration README에 따라 서비스를 실행합니다.

인증 및 권한

Cloud Orchestrator 서비스가 원격 머신에서 실행되는 경우 ATS 작업자 호스트에 HTTP 요청을 통해 액세스하는 데 필요한 권한이 있는지 확인합니다. HTTP 연결이 허용되지 않으면 SSH 포트 포워딩을 설정해야 할 수 있습니다. 자세한 내용은 클라우드 조정자 사용해 보기를 참고하세요.

예상 상태

Cloud Orchestrator 서비스가 성공적으로 시작되면 HTTP를 사용하여 연결할 수 있어야 합니다. API를 쿼리하여 상태를 확인할 수 있습니다.

  • 서비스 핑: OmniLab ATS 작업자 호스트에서 서비스 엔드포인트에 연결할 수 있어야 합니다. 예를 들어 curl -I http://localhost:8080/v1/zones/local/hosts를 실행하면 서비스가 활성 상태이고 연결할 수 있음을 확인하는 성공적인 HTTP 응답 (HTTP/1.1 200 OK 또는 /username으로 리디렉션되는 302 Found)이 반환되어야 합니다.

클라우드 오케스트레이션을 위한 OmniLab ATS 구성

OmniLab ATS를 시작하기 전에 OmniLab ATS 작업자 호스트의 모든 Cuttlefish 인스턴스가 중지되어 있는지 확인합니다. OmniLab ATS는 테스트 주기 중에 가상 기기를 자동으로 시작하고 중지하며 기존 Cuttlefish 인스턴스는 OmniLab ATS에서 관리하는 인스턴스와 충돌합니다. Cuttlefish 인스턴스 중지에 관한 자세한 내용은 Cuttlefish 중지를 참고하세요.

OmniLab ATS에서 클라우드 오케스트레이션을 사용 설정하려면 OmniLab ATS를 시작할 때 특정 플래그를 전달하세요.

mtt start --use_cloud_orchestrator \
  --cloud_orchestrator_service_url=http://HOST:PORT \
  --max_local_virtual_devices N \
  --use_host_network
  • --use_cloud_orchestrator: 클라우드 오케스트레이션 기능을 사용 설정합니다.
  • --cloud_orchestrator_service_url: Cloud Orchestrator 서비스가 수신 대기하는 URL을 지정합니다(예: http://localhost:8080).
  • --max_local_virtual_devices: OmniLab ATS가 동시에 할당할 수 있는 최대 가상 기기 수를 설정합니다. 기본값은 0입니다.
  • --use_host_network: 컨테이너에 호스트의 네트워크 네임스페이스를 사용합니다. Cloud Orchestrator 서비스에 액세스하는 데 필요합니다.

클라우드 조정 기기로 테스트 실행

이 섹션에서는 클라우드에서 오케스트레이션된 가상 기기에서 테스트를 실행하는 단계를 설명합니다.

기기 선택

기기 목록에서 OmniLab ATS는 클라우드에서 오케스트레이션된 가상 기기를 실제 일련번호 대신 자리표시자로 표시합니다. 자리표시자는 HOSTNAME:PORT 형식으로 표시됩니다 (예: thehostname:6520). 상태는 Available 또는 Allocated입니다. 자리표시자가 Available이면 가상 기기가 실행되고 있지 않으며 테스트에 할당할 수 있음을 나타냅니다.

클라우드 조정 기기 선택

그림 1. 클라우드 오케스트레이션 가상 기기 선택

기기 작업 추가

이러한 기기에서 테스트가 예약되면 ATS는 테스트 주기 중에 Cuttlefish 인스턴스를 프로비저닝하고 관리하는 데 필요한 기기 작업을 자동으로 추가합니다.

자동 기기 작업

그림 2. 자동 기기 작업

테스트 리소스 설정

테스트를 예약할 때는 필수 테스트 리소스를 제공해야 합니다. 테스트 리소스 설정 섹션에서 업로드된 파일을 올바른 리소스 이름에 매핑해야 합니다.

  • 호스트 도구 패키지(예: cvd-host_package.tar.gz)를 이름 cvd_host_package에 매핑합니다.
  • 기기 이미지 zip을 cvd_device_image 이름에 매핑합니다.

클라우드 오케스트레이션 테스트 리소스

그림 3. 테스트 리소스 매핑

테스트 실행 및 로그 보기

테스트가 완료되면 출력 파일 섹션에서 로그를 확인할 수 있습니다. Cloud Orchestrator 관리 인스턴스에 대해 수집되는 특정 로그는 다음과 같습니다.

  • launcher.log: Cuttlefish 런처의 로그
  • kernel.log: 표준 Android 커널 로그