การจัด Orchestration ในระบบคลาวด์ใน OmniLab ATS

แอป Cloud Orchestration มี วิธีที่มีประสิทธิภาพสูงและปรับขนาดได้ในการจัดการอินสแตนซ์ Cuttlefish โดยเฉพาะอย่างยิ่ง สำหรับอุปกรณ์เสมือน (CHD) ที่ใช้ ARM OmniLab ATS รองรับ Cloud Orchestration เพื่อให้คุณเรียกใช้การทดสอบในอุปกรณ์เสมือนได้ ก่อนเริ่มใช้อุปกรณ์เสมือน ให้ทำตาม OmniLab Android Test Station เพื่อติดตั้ง OmniLab ATS

ภาพรวม

Cloud Orchestration ช่วยให้ OmniLab ATS มอบหมายการจัดการอินสแตนซ์ Cuttlefish ให้กับบริการ Cloud Orchestrator โดยเฉพาะ แนวทาง นี้มีข้อดีหลายประการเหนือโหมดโลคัลและโหมดระยะไกล ที่มีอยู่ ในขณะที่ยังคง ประสบการณ์การใช้งานที่คุ้นเคยไว้

  • การเปิดใช้อินสแตนซ์แบบขนาน: อนุญาตให้เปิดใช้อินสแตนซ์ Cuttlefish หลายรายการพร้อมกัน ซึ่งช่วยลดเวลาในการดำเนินการก่อนเริ่มการทดสอบได้อย่างมาก
  • ความสามารถในการปรับขนาด: เหมาะสำหรับสภาพแวดล้อมการทดสอบขนาดใหญ่
  • การแยกทรัพยากร: แยกสภาพแวดล้อมการดำเนินการทดสอบ (ATS Worker) ออกจากสภาพแวดล้อมการจำลองอุปกรณ์

สิ่งที่ต้องมีก่อน

  • เครื่องโฮสต์ที่สามารถเรียกใช้ Docker ได้
  • สิทธิ์เข้าถึงอิมเมจ Docker ของ Cuttlefish Orchestration

ตั้งค่าบริการ Cloud Orchestrator

บริการ Cloud Orchestrator จะจัดการวงจรชีวิตของอินสแตนซ์ Cuttlefish คุณสามารถติดตั้งใช้งานบริการในสภาพแวดล้อมต่างๆ ได้ และบริการนี้รองรับทั้งสถาปัตยกรรม x86 และ ARM

  • โฮสต์เดียวกับ ATS Worker: ทำงานในคอนเทนเนอร์ Docker บนเครื่องเดียวกัน
  • เครื่องแยกต่างหาก: ทำงานบนเซิร์ฟเวอร์ในองค์กรที่สามารถเรียกใช้ Docker ได้
  • อินสแตนซ์ระบบคลาวด์: ทำงานบนเครื่องเสมือนในสภาพแวดล้อมระบบคลาวด์ เช่น Google Compute Engine

ติดตั้งและตั้งค่าบริการ

ทำตาม Cloud Android Orchestration README เพื่อเปิดใช้บริการ

การตรวจสอบสิทธิ์และสิทธิ์

หากบริการ Cloud Orchestrator ทำงานบนเครื่องระยะไกล ให้ตรวจสอบว่าโฮสต์ ATS Worker มีสิทธิ์ที่จำเป็นในการเข้าถึงบริการผ่านคำขอ HTTP หากไม่ได้รับอนุญาตให้เชื่อมต่อผ่าน HTTP คุณอาจต้องตั้งค่าการส่งต่อพอร์ต SSH ดูรายละเอียดได้ที่ ลองใช้ Cloud Orchestrator

สถานะที่คาดไว้

หลังจากเริ่มบริการ Cloud Orchestrator สำเร็จแล้ว ควรเข้าถึงบริการได้โดยใช้ HTTP คุณสามารถตรวจสอบสถานะของบริการได้โดยการค้นหา API ของบริการ ดังนี้

  • Ping บริการ: คุณควรเข้าถึงปลายทางของบริการจากโฮสต์ OmniLab ATS Worker ได้ เช่น การเรียกใช้ curl -I http://localhost:8080/v1/zones/local/hosts ควรแสดงการตอบสนอง HTTP ที่สำเร็จ (ทั้ง HTTP/1.1 200 OK หรือการเปลี่ยนเส้นทาง 302 Found ไปยัง /username) ซึ่งยืนยันว่าบริการทำงานอยู่และเข้าถึงได้

กำหนดค่า OmniLab ATS สำหรับ Cloud Orchestration

ก่อนเริ่ม OmniLab ATS ให้ตรวจสอบว่าอินสแตนซ์ Cuttlefish ทั้งหมดในโฮสต์ OmniLab ATS Worker หยุดทำงานแล้ว OmniLab ATS จะเปิดและหยุดอุปกรณ์เสมือนโดยอัตโนมัติตลอดวงจรการทดสอบ และอินสแตนซ์ Cuttlefish ที่มีอยู่จะขัดแย้งกับอินสแตนซ์ที่จัดการโดย OmniLab ATS ดูรายละเอียดเกี่ยวกับการหยุด อินสแตนซ์ Cuttlefish ได้ที่ หยุด Cuttlefish

หากต้องการเปิดใช้ Cloud Orchestration ใน OmniLab ATS ให้ส่งแฟล็กเฉพาะเมื่อเริ่ม OmniLab ATS ดังนี้

mtt start --max_orchestration_virtual_devices N \
  --orchestration_service_url=http://HOST:PORT \
  --use_host_network \
  --force_ats_version 2 \
  --force_update
  • --max_orchestration_virtual_devices: กำหนดจำนวนสูงสุดของอุปกรณ์เสมือนที่จัดการโดย Cloud Orchestrator ซึ่ง OmniLab ATS สามารถจัดสรรได้พร้อมกัน จำนวนเริ่มต้นคือ 0
  • --orchestration_service_url: ระบุ URL ที่บริการ Cloud Orchestration กำลังรอรับการเชื่อมต่อ เช่น http://localhost:8080
  • --use_host_network: ใช้เนมสเปซเครือข่ายของโฮสต์สำหรับคอนเทนเนอร์ คุณต้องใช้แฟล็กนี้เพื่อเข้าถึงบริการ Cloud Orchestration
  • --force_ats_version 2: บังคับให้ใช้ OmniLab ATS 2.0 ซึ่งจำเป็นสำหรับ Cloud Orchestration ดูข้อมูลเพิ่มเติมได้ที่คู่มือการอัปเกรด OmniLab ATS 2.0
  • --force_update: ดึงข้อมูลบิลด์คอนเทนเนอร์ล่าสุดที่มีฟีเจอร์ ATS 2.0 และ Cloud Orchestration

กำหนดค่าข้อกำหนดฮาร์ดแวร์ของอุปกรณ์เสมือนจริง (ไม่บังคับ)

โดยค่าเริ่มต้น ระบบจะจัดสรรอินสแตนซ์อุปกรณ์เสมือนจริงที่จัดการโดย Cloud Orchestration แต่ละรายการด้วย CPU 4 รายการและ RAM 8192 MB (8 GB) เมื่อเปิดใช้ OmniLab ATS ด้วย Cloud Orchestration คุณสามารถปรับแต่งจำนวนคอร์ CPU และการจัดสรรหน่วยความจำสำหรับอินสแตนซ์อุปกรณ์เสมือนได้โดยส่ง --android_jit_emulator_cpus และ --android_jit_emulator_memory_mb ไปยังเซิร์ฟเวอร์ Lab ในคำสั่ง mtt start โดยใช้ --extra_docker_args ดังนี้

mtt start --max_orchestration_virtual_devices N \
  --orchestration_service_url=http://HOST:PORT \
  --use_host_network \
  --force_ats_version 2 \
  --force_update \
  --extra_docker_args '-e LAB_SERVER_OPTS="--android_jit_emulator_cpus=CPUS --android_jit_emulator_memory_mb=MEMORY_MB"'
  • --android_jit_emulator_cpus: กำหนดจำนวนคอร์ CPU สำหรับอินสแตนซ์อุปกรณ์เสมือนแต่ละรายการ หากไม่ได้ตั้งค่าหรือตั้งค่า ≤ 0 ระบบจะใช้ค่าเริ่มต้นเป็น 4
  • --android_jit_emulator_memory_mb: กำหนดหน่วยความจำเป็นเมกะไบต์ (MB) สำหรับอินสแตนซ์อุปกรณ์เสมือนจริงแต่ละรายการ หากไม่ได้ตั้งค่าหรือตั้งค่า ≤ 0 ระบบจะใช้ค่าเริ่มต้นเป็น 8192

เรียกใช้การทดสอบด้วยอุปกรณ์ที่จัดการโดย Cloud Orchestration

ส่วนนี้อธิบายขั้นตอนในการเรียกใช้การทดสอบในอุปกรณ์เสมือนที่จัดการโดย Cloud Orchestration

เลือกอุปกรณ์

ในรายการอุปกรณ์ OmniLab ATS จะแสดงอุปกรณ์เสมือนที่จัดการโดย Cloud Orchestration เป็นตัวยึดตำแหน่งแทนหมายเลขซีเรียลจริง ตัวยึดตำแหน่งจะแสดง ในรูปแบบของ HOSTNAME:PORT (เช่น thehostname:6520) โดยสถานะจะเป็น พร้อมใช้งาน หรือจัดสรรแล้ว ตัวยึดตำแหน่งในสถานะพร้อมใช้งาน แสดงว่าอุปกรณ์เสมือนจริงไม่ได้ทำงานและสามารถจัดสรรสำหรับการทดสอบได้

เลือกอุปกรณ์ที่จัดระเบียบในระบบคลาวด์

รูปที่ 1 การเลือกอุปกรณ์เสมือนที่จัดการโดย Cloud Orchestration

เพิ่มการดำเนินการของอุปกรณ์

เมื่อกำหนดเวลาการทดสอบในอุปกรณ์เหล่านี้ ATS จะเพิ่มการดำเนินการของอุปกรณ์ที่จำเป็นโดยอัตโนมัติเพื่อจัดสรรและจัดการอินสแตนซ์ Cuttlefish ระหว่างวงจรการทดสอบ

การดำเนินการอัตโนมัติของอุปกรณ์

รูปที่ 2 การดำเนินการของอุปกรณ์อัตโนมัติ

ตั้งค่าทรัพยากรการทดสอบ

เมื่อกำหนดเวลาการทดสอบ คุณต้องระบุทรัพยากรการทดสอบที่จำเป็น ในส่วนตั้งค่าทรัพยากรการทดสอบ ให้ตรวจสอบว่าคุณได้แมปไฟล์ที่อัปโหลดกับชื่อทรัพยากรที่ถูกต้องแล้ว ดังนี้

  • แมปแพ็กเกจเครื่องมือโฮสต์ เช่น cvd-host_package.tar.gz กับชื่อ cvd_host_package
  • แมป ZIP ของอิมเมจอุปกรณ์กับชื่อ cvd_device_image

ทรัพยากรการทดสอบสำหรับการจัด Orchestrate ในระบบคลาวด์

รูปที่ 3 การแมปทรัพยากรการทดสอบ

ดูการเรียกใช้และการบันทึกการทดสอบ

หลังจากที่การทดสอบเสร็จสมบูรณ์แล้ว คุณสามารถดูบันทึกได้ในส่วนไฟล์เอาต์พุต บันทึกเฉพาะที่รวบรวมไว้สำหรับอินสแตนซ์ที่จัดการโดย Cloud Orchestrator ได้แก่

  • launcher.log: บันทึกจากตัวเปิดใช้ Cuttlefish
  • kernel.log: บันทึกเคอร์เนล Android มาตรฐาน