Callisto. Warum haben wir uns einen Ersatz fĂŒr Selenium Grid ausgedacht?





HabrĂ© hat bereits mehr als einmal geschrieben, dass Selenium Grid Probleme hat, die nicht auf einfache Weise gelöst werden können (zum Beispiel: eins , zwei , drei ). In diesem Artikel teilen wir unsere Erfahrungen und zeigen, wie es uns bei Wrike gelungen ist, ein stabiles Framework fĂŒr Selentests zu erstellen.





TLDR: Wir haben unsere eigene Open Source-Lösung geschrieben und Selenium Grid vollstÀndig durch diese ersetzt.





Wir haben bereits darĂŒber gesprochen, wie wir unsere Selenium-Farm mit Google Cloud Engine und Kubernetes skaliert haben. Wir haben die Warteschlangen fĂŒr das Starten von Tests beseitigt , aber die QS-Abteilung erhielt regelmĂ€ĂŸig Beschwerden ĂŒber die InstabilitĂ€t der Testinfrastruktur.





Einen Weg wÀhlen

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 , , , .





Der Fehler trat entweder auf der Seite von Google Load Balancer oder auf der Seite von Ingress Controller auf
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