This umbrella chart is created to deploy my motivation for Autoscaling Selenium Grid on Kubernetes, details as below
More details on my motivation are mentioned in the presentation here.
- Maven (Tested version 3.8.6)
- Helm v3 (Tested version v3.11.3)
- Kubernetes (Tested version v1.25.5 - Runtime: Docker v20.10.24 - Provisioned by Minikube v1.26.1)
Noted: At the moment, chart supports PersistenceVolume on local HostPath only. Other types of PV will be added later.
# Add ndviet helm repository
helm repo add chart-repo https://www.ndviet.org/test-scaling-grid
# Update charts from ndviet repo
helm repo update
# List all versions present in the ndviet repo
helm search repo chart-repo/scalable-selenium-grid --versions
# Install full components as default with latest version
helm upgrade -i release chart-repo/scalable-selenium-grid
# Download the chart latest version to local
helm fetch chart-repo/scalable-selenium-grid --untar
mvn clean install
Built chart is located under target/helm/repo/scalable-selenium-grid-x.x.x.tgz
Updated
- Chart dependencies:
- selenium-grid
(0.24.0 -> 0.25.1)
- selenium-grid
Updated
- Chart dependencies:
- selenium-grid
(0.23.0 -> 0.24.0)
- ingress-nginx
(4.8.2 -> 4.8.3)
- selenium-grid
Added
- Default ingress path
/selenium
for Selenium Grid UI. - Update chart default values aligned with new changes in chart
selenium-grid
version 0.24.0
Removed
- Video recording container definition in
node.sidecars
. Since chart version 0.23.0 supports video recoder built-in.
Updated
- Image for video-recording
ndviet/video:ffmpeg-6.0-20231025
to test the PR SeleniumHQ/docker-selenium #1981 - Add back ConfigMap in chart to overwrite scripts, configs in the default video-recording container (Refer to patch-selenium-grid)
Removed
- Scripts, configs in video-recording are initialized when build Docker image. Refer to source repo.
Updated
- Node directory
/home/seluser/Downloads
is mounted to<pv_path>/data/$POD_NAME
. - For traceability, a session is run in which node
$POD_NAME
is logged in file<pv_path>/data/$SESSION_ID.txt
. - New image for video-recording
ndviet/video:ffmpeg-6.0-alpine-20231024
.
Added
- WebDAV service is deployed to access and browse data and videos of distributed nodes remotely.
- By default, WebDAV is exposed via ingress TCP host port
8080
. Change another port viaingress-nginx.tcp
in scalable-selenium-grid/values.yaml. - Videos and node data can be browsed via WebDAV client.
- By default, WebDAV is exposed via ingress TCP host port
Updated
- Chart dependencies:
- jaeger-all-in-one
(0.1.8 -> 0.1.11)
- ingress-nginx
(4.0.6 -> 4.8.2)
- jaeger-all-in-one
- Video image:
ndviet/video:ffmpeg-6.0-alpine-20231019
. A huge reduction in image size by changing based image fromubuntu:20.04
toalpine:3.13
Removed
- Templates to create scaledObject in module grid-autoscaling (Fortunately, Selenium-Grid Helm Chart added autoscaling in default values.yaml from version 0.19.0)
Updated
- Use
node.sidecars
to define the second container for video-recording (Refer to chart scalable-selenium-grid/values.yaml for more details) - Chart dependencies:
- selenium-grid
(0.15.8 -> 0.22.0)
- keda
(2.10.1 -> 2.12.0)
- selenium-grid
Added
- Use ConfigMap to overwrite scripts, configs in the default video-recording container (Refer to patch-selenium-grid)
- Video container refer to ENV
DRAIN_AFTER_SESSION_COUNT
to terminate the container together with browser node. - Video container support graceful shutdown, terminate the container after the ongoing recording are completed.
- Video support API via port 9000 to get status
- GET
/status
: return statustrue/false
of pid "video.sh" is running. Can be used in startupProbe, livenessProbe to check whether container is healthy. - GET
/recording
: return statustrue/false
of pid "ffmpeg" is running. - POST
/drain
: terminating with grace. Can call this API in containerlifecycle.preStop.exec.command
Or in part ofselenium-grid.autoscaling.deregisterLifecycle.preStop.exec.command
to gracefully shut down the container together with browser node.
- GET
- Those above features need to use with image ndviet/video:ffmpeg-4.4.3-20231012
Added
- Umbrella chart to deploy scalable selenium grid in module scalable-selenium-grid