การจัด 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

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

ทำตามไฟล์ README ของ Cloud Android Orchestration เพื่อเปิดใช้บริการ

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

หากบริการ 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

ส่วนนี้อธิบายขั้นตอนในการเรียกใช้การทดสอบบนอุปกรณ์เสมือนที่จัดการโดย 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 มาตรฐาน