Cloud Orchestration 앱은 특히 ARM 기반 가상 기기 (CHD)의 Cuttlefish 인스턴스를 관리하는 고성능의 확장 가능한 방법을 제공합니다. OmniLab ATS는 가상 기기에서 테스트를 실행할 수 있도록 Cloud Orchestration을 지원합니다. 가상 기기 사용을 시작하기 전에 OmniLab Android 테스트 스테이션에 따라 OmniLab ATS를 설치합니다.
개요
Cloud Orchestration을 사용하면 OmniLab ATS가 Cuttlefish 인스턴스 관리를 전용 Cloud Orchestrator 서비스에 위임할 수 있습니다. 이 접근 방식은 익숙한 사용자 환경을 유지하면서 기존의 로컬 및 원격 모드에 비해 여러 가지 이점을 제공합니다.
- 동시 인스턴스 실행: 여러 Cuttlefish 인스턴스를 동시에 실행할 수 있으므로 테스트가 시작되기 전의 오버헤드 시간이 크게 줄어듭니다.
- 확장성: 대규모 테스트 환경에 적합합니다.
- 리소스 격리: 테스트 실행 환경 (ATS 작업자)을 기기 에뮬레이션 환경에서 분리합니다.
기본 요건
- Docker를 실행할 수 있는 호스트 머신
- Cuttlefish Orchestration Docker 이미지에 액세스
Cloud Orchestrator 서비스 설정
Cloud Orchestrator 서비스는 Cuttlefish 인스턴스의 수명 주기를 관리합니다. 다양한 환경에서 서비스를 배포할 수 있으며 x86 및 ARM 아키텍처를 모두 지원합니다.
- ATS 작업자와 동일한 호스트: 동일한 머신의 Docker 컨테이너에서 실행됩니다.
- 별도의 머신: Docker를 실행할 수 있는 온프레미스 서버에서 실행됩니다.
- 클라우드 인스턴스: 클라우드 환경의 가상 머신(예: Google Compute Engine)에서 실행됩니다.
서비스 설치 및 설정
Cloud Android Orchestration README 에 따라 서비스를 실행합니다.
인증 및 권한
Cloud Orchestrator 서비스가 원격 머신에서 실행 중인 경우 ATS 작업자 호스트에 HTTP 요청을 통해 액세스하는 데 필요한 권한이 있는지 확인합니다. HTTP 연결이 허용되지 않는 경우 SSH 포트 전달을 설정해야 할 수 있습니다. 자세한 내용은 클라우드 Orchestrator 사용해 보기를 참고하세요.
예상 상태
Cloud Orchestrator 서비스가 성공적으로 시작되면 HTTP를 사용하여 연결할 수 있어야 합니다. API를 쿼리하여 상태를 확인할 수 있습니다.
- 서비스 핑: OmniLab ATS 작업자 호스트에서 서비스 엔드포인트에 연결할 수 있어야 합니다. 예를 들어
curl -I http://localhost:8080/v1/zones/local/hosts를 실행하면 성공적인 HTTP 응답 (HTTP/1.1 200 OK또는302 Found가/username으로 리디렉션)이 반환되어 서비스가 활성 상태이고 연결할 수 있음을 확인합니다.
Cloud Orchestration을 위한 OmniLab ATS 구성
OmniLab ATS를 시작하기 전에 OmniLab ATS 작업자 호스트의 모든 Cuttlefish 인스턴스가 중지되었는지 확인합니다. OmniLab ATS는 테스트 주기 중에 가상 기기를 자동으로 시작하고 중지하며 기존 Cuttlefish 인스턴스는 OmniLab ATS에서 관리하는 인스턴스와 충돌합니다. Cuttlefish 인스턴스 중지에 관한 자세한 내용은 Cuttlefish 중지를 참고하세요.
OmniLab ATS에서 Cloud Orchestration을 사용 설정하려면 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: Cloud Orchestration 기능을 사용 설정합니다.--orchestration_service_url: Cloud Orchestration 서비스가 수신 대기 중인 URL(예:http://localhost:8080)을 지정합니다.--max_local_virtual_devices: OmniLab ATS가 동시에 할당할 수 있는 최대 가상 기기 수를 설정합니다. 기본값은 0입니다.--use_host_network: 컨테이너에 호스트의 네트워크 네임스페이스를 사용합니다. Cloud Orchestration 서비스에 액세스하는 데 필요합니다.--force_ats_version 2: Cloud Orchestration에 필요한 OmniLab ATS 2.0의 사용을 강제합니다. 자세한 내용은 OmniLab ATS 2.0 업그레이드 가이드를 참고하세요.--force_update: ATS 2.0 및 Cloud Orchestration 기능이 포함된 최신 컨테이너 빌드를 가져옵니다.
클라우드 Orchestration 기기로 테스트 실행
이 섹션에서는 클라우드 Orchestration 가상 기기에서 테스트를 실행하는 단계를 설명합니다.
기기 선택
기기 목록에서 OmniLab ATS는 클라우드 Orchestration 가상 기기를 실제 일련번호 대신 자리표시자로 표시합니다. 자리표시자는
HOSTNAME:PORT 형식 (예:
thehostname:6520)으로 표시됩니다. 상태는 Available 또는 Allocated 입니다. 자리표시자가 Available 이면 가상 기기가 실행되고 있지 않으며 테스트에 할당할 수 있음을 나타냅니다.
그림 1. 클라우드 Orchestration 가상 기기 선택
기기 작업 추가
이러한 기기에서 테스트가 예약되면 ATS는 테스트 주기 중에 Cuttlefish 인스턴스를 프로비저닝하고 관리하는 데 필요한 기기 작업을 자동으로 추가합니다.
그림 2. 자동 기기 작업
테스트 리소스 설정
테스트를 예약할 때는 필요한 테스트 리소스를 제공해야 합니다. 테스트 리소스 설정 섹션에서 업로드된 파일을 올바른 리소스 이름에 매핑해야 합니다.
- 호스트 도구 패키지(예:
cvd-host_package.tar.gz)를 이름cvd_host_package에 매핑합니다. - 기기 이미지 zip을 이름
cvd_device_image에 매핑합니다.
그림 3. 테스트 리소스 매핑
테스트 실행 및 로그 보기
테스트가 완료되면 출력 파일 섹션에서 로그를 볼 수 있습니다. Cloud Orchestrator 관리 인스턴스에 대해 수집된 특정 로그는 다음과 같습니다.
launcher.log: Cuttlefish 실행기의 로그kernel.log: 표준 Android 커널 로그