KEMBAR78
Selenium in Kubernetes: lessons learned | PDF
Selenium in Kubernetes: lessons learned
by Ivan Krutov
About me
Java & Golang developer
Devops
Big Selenium cluster
Big Selenium Cluster
Typical Selenium Grid
50 browsers
10000 sessions / day
1 data center
5 rps
500 Kbit/s
Sometimes down
My cluster
5000+ browsers
2.5M sessions / day
5 data centers
4000 rps
> 2 Gbit/s
24/7/365
Big Selenium Cluster
Selenium Tools
Selenoid BrowsersMoon
Selenium is expensive
Stone Age (10 years ago)
Middle Ages (5 years ago)
Modern History (3 years ago)
Nowadays
Getting Kubernetes cluster
Minikube CloudDocker Manually
Interacting with Kubernetes
kubectlAPI Web UI
Namespace
Kubernetes Concepts
Pod Service Deployment
Demo #1
Selenium Grid in Kubernetes
Node 1 Node 2
Hub Node
Selenium launcher in Kubernetes
Selenium
API
ContainerPod
Kubernetes
API
Why Selenoid is not suitable
Node 1 Node 2
Fault-tolerance in Kubernetes
ServiceIngress (L7)
LoadBalancer (L3)
Stateful Selenium fault-tolerance
Stateful Selenium fault-tolerance
Selenograph Selenium Grid 4 WebDriverGrid
Stateful Selenium fault-tolerance
Databases maintenance is complicated
Not every database can live in Kubernetes
Databases go down under Selenium load
Stateless Selenium fault-tolerance
Service
POST /session/<id>/url
GET /session/<id>/screenshot
Stateless Selenium fault-tolerance
Ggr Moon
Original session ID:
e0dfdda0-1786-4e8f-987b-29a61f5c165e
md5(‘http://example.com:4444’):
798744d2b7036ba36c4ea285272bcd48
Extended session ID:
798744d2b7036ba36c4ea285272bcd48e0dfdda0-
1786-4e8f-987b-29a61f5c165e
Ggr session ID magic
Moon generated host names
firefox-73-0-<uuid>
firefox-73-0-<uuid>
Artifact storage in Kubernetes
Container 1
Container 2
Volume
S3 artifact storage
Data
Replica 2
S3 SLB
Replica 1
Demo #2
Kubernetes makes Selenium cheaper
References
https://github.com/aerokube/moon
@aerokube
https://t.me/aerokube
https://aerokube.com/
https://bit.ly/2C2LstZ

Selenium in Kubernetes: lessons learned