Callisto. Mengapa kami datang dengan pengganti Selenium Grid





Habré sudah lebih dari sekali menulis bahwa Selenium Grid mempunyai masalah yang tidak bisa diselesaikan dengan cara yang sederhana (contoh: satu , dua , tiga ). Dalam artikel ini, kami akan membagikan pengalaman kami dan membagikan bagaimana kami di Wrike berhasil membangun kerangka kerja yang stabil untuk pengujian Selenium.





TLDR: Kami menulis solusi open source kami sendiri dan sepenuhnya mengganti Selenium Grid dengannya.





Kami telah membicarakan tentang bagaimana kami meningkatkan skala farm Selenium kami menggunakan Google Cloud Engine dan Kubernetes. Kami menyingkirkan antrean untuk meluncurkan pengujian, tetapi departemen QA secara rutin menerima keluhan tentang ketidakstabilan infrastruktur pengujian.





Memilih jalan

Selenium Grid GKE , . GKE Preemptible VMs. , , . . , , Selenium Grid, . , .





Selenoid Aerokube, , Selenium Grid (Selenium Hub Selenium Node). , , Kubernetes, : .





, Kubernetes, Zalnium, jsonwire-grid Moon. Zalenium jsonwire-grid Selenium Node, . Zalenium . 





Moon , . : , Moon , ( ). , - — Selenium Grid, , .





, . , , .





«»?

Selenium Grid . , . Selenium , W3C Webdriver





, HTTP API ( W3C Webdriver) ( -). , Google Chrome ChromeDriver, Mozilla Firefox — geckodriver . . W3C — -.





, . , capabilities , .





2 — / . Callisto — open source , . / , Kubernetes, Nginx. .





Callisto

Callisto : Nginx, Callisto pod’ -. 





Nginx 2 :





  1. / Callisto.





  2. -.





Callisto :





  1. pod -.





  2. - .





:





  1. .





  2. pod .





Docker- Selenoid.





pod’ . - session_id, -, pod’. , — Callisto. , Callisto stateless-.





: , - , Callisto session_id -, ip- pod’, . session_id — pod_ip .





, W3C Webdriver session_id URL-, Nginx. Nginx , session_id, ip- pod’ session_id pod’ session_id.





: pod’ Callisto .





:





Callisto

Web UI. Web UI Selenoid UI





Callisto :





  • Selenium-.





  • VNC.





  • - .





.





: Selenoid UI. , .





. Callisto Prometheus: Selenium-.





Callisto, Selenoid, . . , . 





, - pod’ -. Kubernetes- , pod’.





pod’ , ~10 ( 2- , Kubernetes- ).





Callisto

Callisto — 2000 . , . , . , - .





499- Nginx. Nginx 499- . : Kubernetes- ( ) , . “Server disconnected error”.





Nginx , , , .





Kesalahan terjadi baik di sisi Google Load Balancer atau di sisi Ingress Controller
Google Load Balancer, Ingress Controller

, worker-shutdown-timeout. 10 ( -) 120 .





: ingress-nginx 0.26.0 - 10 240 .





. Kubernetes- pod’ , session_id.





— session_id, , Nginx .





: ( GKE 1.12):





1000+ , . session_id, .





: pod’ , .





Kubernetes-API. 100 Kubernetes-API , , . , Callisto Kubernetes-API . . 





pod’ . / pod’ ~500 . 1000 .





GKE 1.12 1.14. 1.14 pod’ 10 2000 .





504- Nginx. - , Nginx 504- . , Preemptible VMs. Google VM, pod’ VM , .





Nginx ( ) : .





Callisto

, .





, , GKE 30-40% . , Callisto , pod’ , . Selenium Grid pod' , . pod' , .. Selenium Node. 





Selenium Grid Callisto:





2019-2020
2019-2020

:





  • Callisto





  • Helm chart





Callisto, . , -.





.








All Articles