This chart enables the creation of a Selenium Grid Server in Kubernetes.
If you want to install the latest master version of Selenium Grid onto your cluster you can do that by using the helm charts repository located at https://www.selenium.dev/docker-selenium.
# Add docker-selenium helm repository
helm repo add docker-selenium https://www.selenium.dev/docker-selenium
# Update charts from docker-selenium repo
helm repo update
# List all versions present in the docker-selenium repo
helm search repo docker-selenium --versions
# Install basic grid latest version
helm install selenium-grid docker-selenium/selenium-grid
# Or install full grid (Router, Distributor, EventBus, SessionMap and SessionQueue components separated)
helm install selenium-grid docker-selenium/selenium-grid --set isolateComponents=true
# Or install specified version
helm install selenium-grid docker-selenium/selenium-grid --version 0.3.1
# In both cases grid exposed by default using ingress. You may want to set hostname for the grid. Default hostname is selenium-grid.local.
helm install selenium-grid --set ingress.hostname=selenium-grid.k8s.local docker-selenium/chart/selenium-grid/.
Once you have a new chart version, you can update your selenium-grid running:
helm upgrade selenium-grid docker-selenium/selenium-grid
To uninstall:
helm uninstall selenium-grid
For now, global configuration supported is:
Parameter | Default | Description |
---|---|---|
global.seleniumGrid.imageTag |
4.2.2-20220609 |
Image tag for all selenium components |
global.seleniumGrid.nodesImageTag |
4.2.2-20220609 |
Image tag for browser's nodes |
This table contains the configuration parameters of the chart and their default values:
Parameter | Default | Description |
---|---|---|
isolateComponents |
false |
Deploy Router, Distributor, EventBus, SessionMap and Nodes separately |
busConfigMap.name |
selenium-event-bus-config |
Name of the configmap that contains SE_EVENT_BUS_HOST, SE_EVENT_BUS_PUBLISH_PORT and SE_EVENT_BUS_SUBSCRIBE_PORT variables |
ingress.enabled |
true |
Enable or disable ingress resource |
ingress.className |
"" |
Name of ingress class to select which controller will implement ingress resource |
ingress.annotations |
{} |
Custom annotations for ingress resource |
ingress.hostname |
selenium-grid.local |
Default host for the ingress resource |
ingress.tls |
[] |
TLS backend configuration for ingress resource |
busConfigMap.annotations |
{} |
Custom annotations for configmap |
chromeNode.enabled |
true |
Enable chrome nodes |
chromeNode.replicas |
1 |
Number of chrome nodes |
chromeNode.imageName |
selenium/node-chrome |
Image of chrome nodes |
chromeNode.imageTag |
4.2.2-20220609 |
Image of chrome nodes |
chromeNode.imagePullPolicy |
IfNotPresent |
Image pull policy (see https://kubernetes.io/docs/concepts/containers/images/#updating-images) |
chromeNode.ports |
[5553] |
Port list to enable on container |
chromeNode.seleniumPort |
5900 |
Selenium port (spec.ports[0].targetPort in kubernetes service) |
chromeNode.seleniumServicePort |
6900 |
Selenium port exposed in service (spec.ports[0].port in kubernetes service) |
chromeNode.annotations |
{} |
Annotations for chrome-node pods |
chromeNode.labels |
{} |
Labels for chrome-node pods |
chromeNode.resources |
See values.yaml |
Resources for chrome-node container |
chromeNode.tolerations |
[] |
Tolerations for chrome-node container |
chromeNode.nodeSelector |
{} |
Node Selector for chrome-node container |
chromeNode.extraEnvironmentVariables |
nil |
Custom environment variables for chrome nodes |
chromeNode.extraEnvFrom |
nil |
Custom environment taken from configMap or secret variables for chrome nodes |
chromeNode.service.enabled |
true |
Create a service for node |
chromeNode.service.type |
ClusterIP |
Service type |
chromeNode.service.annotations |
{} |
Custom annotations for service |
chromeNode.dshmVolumeSizeLimit |
1Gi |
Size limit for DSH volume mounted in container (if not set, default is "1Gi") |
chromeNode.extraVolumeMounts |
[] |
Extra mounts of declared ExtraVolumes into pod |
chromeNode.extraVolumes |
[] |
Extra Volumes declarations to be used in the pod (can be any supported volume type: ConfigMap, Secret, PVC, NFS, etc.) |
firefoxNode.enabled |
true |
Enable firefox nodes |
firefoxNode.replicas |
1 |
Number of firefox nodes |
firefoxNode.imageName |
selenium/node-firefox |
Image of firefox nodes |
firefoxNode.imageTag |
4.2.2-20220609 |
Image of firefox nodes |
firefoxNode.imagePullPolicy |
IfNotPresent |
Image pull policy (see https://kubernetes.io/docs/concepts/containers/images/#updating-images) |
firefoxNode.ports |
[5553] |
Port list to enable on container |
firefoxNode.seleniumPort |
5900 |
Selenium port (spec.ports[0].targetPort in kubernetes service) |
firefoxNode.seleniumServicePort |
6900 |
Selenium port exposed in service (spec.ports[0].port in kubernetes service) |
firefoxNode.annotations |
{} |
Annotations for firefox-node pods |
firefoxNode.labels |
{} |
Labels for firefox-node pods |
firefoxNode.resources |
See values.yaml |
Resources for firefox-node container |
firefoxNode.tolerations |
[] |
Tolerations for firefox-node container |
firefoxNode.nodeSelector |
{} |
Node Selector for firefox-node container |
firefoxNode.extraEnvironmentVariables |
nil |
Custom environment variables for firefox nodes |
firefoxNode.extraEnvFrom |
nil |
Custom environment variables taken from configMap or secret for firefox nodes |
firefoxNode.service.enabled |
true |
Create a service for node |
firefoxNode.service.type |
ClusterIP |
Service type |
firefoxNode.service.annotations |
{} |
Custom annotations for service |
firefoxNode.dshmVolumeSizeLimit |
1Gi |
Size limit for DSH volume mounted in container (if not set, default is "1Gi") |
firefoxNode.extraVolumeMounts |
[] |
Extra mounts of declared ExtraVolumes into pod |
firefoxNode.extraVolumes |
[] |
Extra Volumes declarations to be used in the pod (can be any supported volume type: ConfigMap, Secret, PVC, NFS, etc.) |
edgeNode.enabled |
true |
Enable edge nodes |
edgeNode.replicas |
1 |
Number of edge nodes |
edgeNode.imageName |
selenium/node-edge |
Image of edge nodes |
edgeNode.imageTag |
4.2.2-20220609 |
Image of edge nodes |
edgeNode.imagePullPolicy |
IfNotPresent |
Image pull policy (see https://kubernetes.io/docs/concepts/containers/images/#updating-images) |
edgeNode.ports |
[5553] |
Port list to enable on container |
edgeNode.seleniumPort |
5900 |
Selenium port (spec.ports[0].targetPort in kubernetes service) |
edgeNode.seleniumServicePort |
6900 |
Selenium port exposed in service (spec.ports[0].port in kubernetes service) |
edgeNode.annotations |
{} |
Annotations for edge-node pods |
edgeNode.labels |
{} |
Labels for edge-node pods |
edgeNode.resources |
See values.yaml |
Resources for edge-node container |
edgeNode.tolerations |
[] |
Tolerations for edge-node container |
edgeNode.nodeSelector |
{} |
Node Selector for edge-node container |
edgeNode.extraEnvironmentVariables |
nil |
Custom environment variables for firefox nodes |
edgeNode.extraEnvFrom |
nil |
Custom environment taken from configMap or secret variables for firefox nodes |
edgeNode.service.enabled |
true |
Create a service for node |
edgeNode.service.type |
ClusterIP |
Service type |
edgeNode.service.annotations |
{} |
Custom annotations for service |
edgeNode.dshmVolumeSizeLimit |
1Gi |
Size limit for DSH volume mounted in container (if not set, default is "1Gi") |
edgeNode.extraVolumeMounts |
[] |
Extra mounts of declared ExtraVolumes into pod |
edgeNode.extraVolumes |
[] |
Extra Volumes declarations to be used in the pod (can be any supported volume type: ConfigMap, Secret, PVC, NFS, etc.) |
customLabels |
{} |
Custom labels for k8s resources |
You can configure the Selenium Hub with this values:
Parameter | Default | Description |
---|---|---|
hub.imageName |
selenium/hub |
Selenium Hub image name |
hub.imageTag |
nil |
Selenium Hub image tag (this overwrites .global.seleniumGrid.imageTag value) |
hub.imagePullPolicy |
IfNotPresent |
Image pull policy (see https://kubernetes.io/docs/concepts/containers/images/#updating-images) |
hub.annotations |
{} |
Custom annotations for Selenium Hub pod |
hub.labels |
{} |
Custom labels for Selenium Hub pod |
hub.publishPort |
4442 |
Port where events are published |
hub.subscribePort |
4443 |
Port where to subscribe for events |
hub.port |
4444 |
Selenium Hub port |
hub.livenessProbe |
See values.yaml |
Liveness probe settings |
hub.readinessProbe |
See values.yaml |
Readiness probe settings |
hub.tolerations |
[] |
Tolerations for selenium-hub container |
hub.nodeSelector |
{} |
Node Selector for selenium-hub container |
hub.extraEnvironmentVariables |
nil |
Custom environment variables for selenium-hub |
hub.extraEnvFrom |
nil |
Custom environment variables for selenium taken from configMap or secret -hub |
hub.resources |
{} |
Resources for selenium-hub container |
hub.serviceType |
NodePort |
Kubernetes service type (see https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) |
hub.serviceAnnotations |
{} |
Custom annotations for Selenium Hub service |
If you implement selenium-grid with separate components (isolateComponents: true
), you can configure all components via the following values:
Parameter | Default | Description |
---|---|---|
components.router.imageName |
selenium/router |
Router image name |
components.router.imageTag |
nil |
Router image tag (this overwrites .global.seleniumGrid.imageTag value) |
components.router.imagePullPolicy |
IfNotPresent |
Image pull policy (see https://kubernetes.io/docs/concepts/containers/images/#updating-images) |
components.router.annotations |
{} |
Custom annotations for router pod |
components.router.port |
4444 |
Router port |
components.router.livenessProbe |
See values.yaml |
Liveness probe settings |
components.router.readinessProbe |
See values.yaml |
Readiness probe settings |
components.router.resources |
{} |
Resources for router container |
components.router.serviceType |
NodePort |
Kubernetes service type (see https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) |
components.router.serviceAnnotations |
{} |
Custom annotations for router service |
components.distributor.imageName |
selenium/distributor |
Distributor image name |
components.distributor.imageTag |
nil |
Distributor image tag (this overwrites .global.seleniumGrid.imageTag value) |
components.distributor.imagePullPolicy |
IfNotPresent |
Image pull policy (see https://kubernetes.io/docs/concepts/containers/images/#updating-images) |
components.distributor.annotations |
{} |
Custom annotations for Distributor pod |
components.distributor.port |
5553 |
Distributor port |
components.distributor.resources |
{} |
Resources for Distributor container |
components.distributor.serviceType |
ClusterIP |
Kubernetes service type (see https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) |
components.distributor.serviceAnnotations |
{} |
Custom annotations for Distributor service |
components.eventBus.imageName |
selenium/event-bus |
Event Bus image name |
components.eventBus.imageTag |
nil |
Event Bus image tag (this overwrites .global.seleniumGrid.imageTag value) |
components.eventBus.imagePullPolicy |
IfNotPresent |
Image pull policy (see https://kubernetes.io/docs/concepts/containers/images/#updating-images) |
components.eventBus.annotations |
{} |
Custom annotations for Event Bus pod |
components.eventBus.port |
5557 |
Event Bus port |
components.eventBus.publishPort |
4442 |
Port where events are published |
components.eventBus.subscribePort |
4443 |
Port where to subscribe for events |
components.eventBus.resources |
{} |
Resources for event-bus container |
components.eventBus.serviceType |
ClusterIP |
Kubernetes service type (see https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) |
components.eventBus.serviceAnnotations |
{} |
Custom annotations for Event Bus service |
components.sessionMap.imageName |
selenium/sessions |
Session Map image name |
components.sessionMap.imageTag |
nil |
Session Map image tag (this overwrites .global.seleniumGrid.imageTag value) |
components.sessionMap.imagePullPolicy |
IfNotPresent |
Image pull policy (see https://kubernetes.io/docs/concepts/containers/images/#updating-images) |
components.sessionMap.annotations |
{} |
Custom annotations for Session Map pod |
components.sessionMap.resources |
{} |
Resources for event-bus container |
components.sessionMap.serviceType |
ClusterIP |
Kubernetes service type (see https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) |
components.sessionMap.serviceAnnotations |
{} |
Custom annotations for Session Map service |
components.sessionQueue.imageName |
selenium/session-queue |
Session Queue image name |
components.sessionQueue.imageTag |
nil |
Session Queue image tag (this overwrites .global.seleniumGrid.imageTag value) |
components.sessionQueue.imagePullPolicy |
IfNotPresent |
Image pull policy (see https://kubernetes.io/docs/concepts/containers/images/#updating-images) |
components.sessionQueue.annotations |
{} |
Custom annotations for Session Queue pod |
components.sessionQueue.resources |
{} |
Resources for event-bus container |
components.sessionQueue.serviceType |
ClusterIP |
Kubernetes service type (see https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) |
components.sessionQueue.serviceAnnotations |
{} |
Custom annotations for Session Queue service |
components.extraEnvironmentVariables |
nil |
Custom environment variables for all components |
components.extraEnvFrom |
nil |
Custom environment variables taken from configMap or secret for all components |
See how to customize a helm chart installation in the Helm Docs for more information.