Calisto. ¿Por qué se nos ocurrió un reemplazo para Selenium Grid?





Habré ya ha escrito más de una vez que Selenium Grid tiene problemas que no se pueden resolver de forma sencilla (por ejemplo: uno , dos , tres ). En este artículo, compartiremos nuestra experiencia y compartiremos cómo en Wrike logramos construir un marco estable para las pruebas de Selenium.





TLDR: Escribimos nuestra propia soluciĂłn de cĂłdigo abierto y reemplazamos por completo Selenium Grid con ella.





Ya hemos hablado sobre cĂłmo escalamos nuestra granja de selenio con Google Cloud Engine y Kubernetes. Eliminamos las colas para el lanzamiento de pruebas, pero el departamento de control de calidad recibĂ­a regularmente quejas sobre la inestabilidad de la infraestructura de pruebas.





Elegir un camino

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





El error se produjo en el lado de Google Load Balancer o en el lado del controlador de ingreso
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