/selenium3-chart

The Helm chart for deploying Selenium 3

Primary LanguageMustacheGNU General Public License v3.0GPL-3.0

Selenium

Artifact HUB

MAINTENANCE NOTICE

  • [2021-03-12] This chart is cloned from a deprecated chart at Stable Helm repo, and continued developing by LogiGear EPG Dept. Since Selenium 4 is still under beta phase and not ready for production yet, this would help any of us, who want to have a "Helm way" to deploy Selenium 3 Grid to Kubernetes Cluster.

TL;DR;

$ helm repo add ta-chart https://chart.testarchitect.com
$ helm repo update
$ helm install my-grid ta-chart/selenium3

Introduction

This chart bootstraps a Selenium 3 deployment on a Kubernetes cluster using the Helm package manager.

Prerequisites

  • Kubernetes 1.5+ with Beta APIs enabled

Installing the Chart

To install the chart with the release name my-grid:

$ helm repo add ta-chart https://chart.testarchitect.com
$ helm repo update
$ helm install my-grid ta-chart/selenium3

The command deploys Selenium on the Kubernetes cluster in the default configuration. The configuration section lists the parameters that can be configured during installation.

Tip: List all releases using helm list

Uninstalling the Chart

To uninstall/delete the my-grid deployment:

$ helm delete my-grid

The command removes all the Kubernetes components associated with the chart and deletes the release.

Configuration

The following table lists the configurable parameters of the Selenium chart and their default values.

Parameter Description Default
global.nodeSelector Node label to be useed globally for scheduling of all images nil
global.hostAliases A list of hostAliases, that contains ip and hostnames, to be used globally []
global.affinity Deployemnt affinities to be used globally for scheduling of all images nil
global.tolerations Deployment tolerations to be used globally for scheduling of all images nil
global.imagePullSecrets The secret to use for pulling the images for all deployments nil
hub.image The selenium hub image selenium/hub
hub.tag The selenium hub image tag 3.141.59
hub.imagePullSecrets The secret to use for pulling the image. Will override the global parameter if set nil
hub.pullPolicy The pull policy for the hub image IfNotPresent
hub.port The port the hub listens on 4444
hub.servicePort The port the hub Service listens on 4444
hub.nodePort The port the hub is exposed when Nodeport mode is selected nil
hub.podAnnotations Annotations on the hub pod {}
hub.podLabels Additionals labels to the hub pod {}
hub.securityContext SecurityContext on the hub pod {"runAsUser": 1000, "fsGroup": 1000}
hub.extraEnvs Any additional environment variables to set in the pods []
hub.javaOpts The java options for the selenium hub JVM, default sets the maximum heap size to 400 mb -Xmx400m
hub.resources The resources for the hub container, defaults to minimum half a cpu and maximum 512 mb RAM {"limits":{"cpu":".5", "memory":"512Mi"}}
hub.serviceType The Service type LoadBalancer
hub.serviceLoadBalancerIP The Public IP for the Load Balancer nil
hub.loadBalancerSourceRanges A list of IP CIDRs allowed access to load balancer (if supported) []
hub.serviceSessionAffinity The session affinity for the hub service None
hub.gridNewSessionWaitTimeout nil
hub.gridJettyMaxThreads nil
hub.gridNodePolling nil
hub.gridCleanUpCycle Specifies how often the hub will poll running proxies for timed-out (i.e. hung) threads (in ms). Must also specify "timeout" option nil
hub.gridTimeout Specifies the timeout before the server automatically kills a session that hasn't had any activity in the last X seconds. nil
hub.gridBrowserTimeout Number of seconds a browser session is allowed to hang while a WebDriver command is running nil
hub.gridMaxSession nil
hub.gridUnregisterIfStillDownAfter nil
hub.seOpts Command line arguments to pass to hub nil
hub.timeZone The time zone for the container nil
hub.nodeSelector Node label to use for scheduling of the hub if set this takes precedence over the global value nil
hub.affinity Deployemnt affinities to use for scheduling of the hub if set this takes precedence over the global value nil
hub.tolerations Deployment tolerations to use for scheduling of the hub if set this takes precedence over the global value nil
hub.ingress.enabled Configure an ingress for the selenium hub false
hub.ingress.annotations Annotations for the ingress for the selenium hub nil
hub.ingress.path The path for this ingress from which to route the traffic to the selenium hub /
hub.ingress.hosts The list hosts for which this ingress should resolve the selenium hub [selenium-hub.local]
hub.ingress.tls The tls secret to configure ssl for this ingress []
hub.readinessTimeout Timeout for hub readiness probe in seconds 1
hub.livenessTimeout Timeout for hub liveness probe in seconds 1
hub.probePath Path for readiness and liveness probes to check /wd/hub/status
chrome.enabled Schedule a chrome node pod false
chrome.runAsDaemonSet Schedule chrome node pods as DaemonSet false
chrome.image The selenium node chrome image selenium/node-chrome
chrome.tag The selenium node chrome tag 3.141.59
chrome.imagePullSecrets The secret to use for pulling the image. Will override the global parameter if set nil
chrome.pullPolicy The pull policy for the node chrome image IfNotPresent
chrome.replicas The number of selenium node chrome pods. This is ignored if runAsDaemonSet is enabled. 1
chrome.enableLivenessProbe When true will add a liveness check to the pod false
chrome.waitForRunningSessions When true will wait for current running sessions to finish before terminating the pod false
chrome.podAnnotations Annotations on the chrome pods {}
chrome.podLabels Additional labels on the chrome pods {}
chrome.securityContext SecurityContext on the chrome pods {"runAsUser": 1000, "fsGroup": 1000}
chrome.extraEnvs Any additional environment variables to set in the pods []
chrome.javaOpts The java options for the selenium node chrome JVM, default sets the maximum heap size to 900 mb -Xmx900m
chrome.volumeMounts Additional volumes to mount, the default provides a larger shared memory [{"mountPath":"/dev/shm", "name":"dshm"}]
chrome.volumes Additional volumes import, the default provides a larger shared memory [{"name":"dshm", "emptyDir":{"medium":"Memory"}}]
chrome.resources The resources for the node chrome container, defaults to minimum half a cpu and maximum 1,000 mb {"limits":{"cpu":".5", "memory":"1000Mi"}}
chrome.screenWidth nil
chrome.screenHeight nil
chrome.screenDepth nil
chrome.display The vnc display nil
chrome.chromeVersion The version of chrome to use nil
chrome.nodeMaxInstances The maximum number of browser instances nil
chrome.nodeMaxSession The maximum number of sessions nil
chrome.nodeRegistryCycle The number of milliseconds to wait, registering a node nil
chrome.nodePort The port to listen on nil
chrome.seOpts Command line arguments to pass to node nil
chrome.timeZone The time zone for the container nil
chrome.nodeSelector Node label to use for scheduling of chrome images if set this takes precedence over the global value nil
chrome.affinity Deployemnt affinities to use for scheduling of the chrome if set this takes precedence over the global value nil
chrome.tolerations Deployment tolerations to use for scheduling of the chrome if set this takes precedence over the global value nil
chromeDebug.enabled Schedule a selenium node chrome debug pod false
chromeDebug.runAsDaemonSet Schedule selenium node chrome debug pods as DaemonSet false
chromeDebug.image The selenium node chrome debug image selenium/node-chrome-debug
chromeDebug.tag The selenium node chrome debug tag 3.141.59
chromeDebug.imagePullSecrets The secret to use for pulling the image. Will override the global parameter if set nil
chromeDebug.pullPolicy The selenium node chrome debug pull policy IfNotPresent
chromeDebug.replicas The number of selenium node chrome debug pods. This is ignored if runAsDaemonSet is enabled. 1
chromeDebug.enableLivenessProbe When true will add a liveness check to the pod false
chromeDebug.waitForRunningSessions When true will wait for current running sessions to finish before terminating the pod false
chromeDebug.podAnnotations Annotations on the Chrome debug pod {}
chromeDebug.podLabels Additional labels on the Chrome debug pods {}
chromeDebug.securityContext SecurityContext on the Chrome debug pods {"runAsUser": 1000, "fsGroup": 1000}
chromeDebug.extraEnvs Any additional environment variables to set in the pods []
chromeDebug.javaOpts The java options for a selenium node chrome debug JVM, default sets the max heap size to 900 mb -Xmx900m
chromeDebug.volumeMounts Additional volumes to mount, the default provides a larger shared [{"mountPath":"/dev/shm", "name":"dshm"}]
chromeDebug.volumes Additional volumes import, the default provides a larger shared [{"name":"dshm", "emptyDir":{"medium":"Memory"}}]
chromeDebug.resources The resources for the hub container, defaults to minimum half a cpu and maximum 1,000 mb {"limits":{"cpu":".5", "memory":"1000Mi"}}
chromeDebug.screenWidth nil
chromeDebug.screenHeight nil
chromeDebug.screenDepth nil
chromeDebug.display The vnc display nil
chromeDebug.chromeVersion The version of chrome to use nil
chromeDebug.nodeMaxInstances The maximum number of browser instances nil
chromeDebug.nodeMaxSession The maximum number of sessions nil
chromeDebug.nodeRegistryCycle The number of milliseconds to wait, registering a node nil
chromeDebug.nodePort The port to listen on nil
chromeDebug.seOpts Command line arguments to pass to node nil
chromeDebug.timeZone The time zone for the container nil
chromeDebug.nodeSelector Node label to use for scheduling of chromeDebug images if set this takes precedence over the global value nil
chromeDebug.affinity Deployemnt affinities to use for scheduling of the chromeDebug if set this takes precedence over the global value nil
chromeDebug.tolerations Deployment tolerations to use for scheduling of the chromeDebug if set this takes precedence over the global value nil
firefox.enabled Schedule a selenium node firefox pod false
firefox.runAsDaemonSet Schedule selenium node firefox pods as DaemonSet false
firefox.image The selenium node firefox image selenium/node-firefox
firefox.tag The selenium node firefox tag 3.141.59
firefox.imagePullSecrets The secret to use for pulling the image. Will override the global parameter if set nil
firefox.pullPolicy The selenium node firefox pull policy IfNotPresent
firefox.replicas The number of selenium node firefox pods. This is ignored if runAsDaemonSet is enabled. 1
firefox.enableLivenessProbe When true will add a liveness check to the pod false
firefox.waitForRunningSessions When true will wait for current running sessions to finish before terminating the pod false
firefox.podAnnotations Annotations on the firefox pods {}
firefox.podLabels Additional labels on the firefox pods {}
firefox.securityContext SecurityContext on the firefox pods {"runAsUser": 1000, "fsGroup": 1000}
firefox.extraEnvs Any additional environment variables to set in the pods []
firefox.javaOpts The java options for a selenium node firefox JVM, default sets the max heap size to 900 mb -Xmx900m
firefox.volumeMounts Additional volumes to mount, the default provides a larger shared memory [{"mountPath":"/dev/shm", "name":"dshm"}]
firefox.volumes Additional volumes import, the default provides a larger shared memory [{"name":"dshm", "emptyDir":{"medium":"Memory"}}]
firefox.resources The resources for the hub container, defaults to minimum half a cpu and maximum 1,000 mb {"limits":{"cpu":".5", "memory":"1000Mi"}}
firefox.screenWidth nil
firefox.screenHeight nil
firefox.screenDepth nil
firefox.display The vnc display nil
firefox.firefoxVersion The version of firefox to use nil
firefox.nodeMaxInstances The maximum number of browser instances nil
firefox.nodeMaxSession The maximum number of sessions nil
firefox.nodeRegistryCycle The number of milliseconds to wait, registering a node nil
firefox.nodePort The port to listen on nil
firefox.seOpts Command line arguments to pass to node nil
firefox.timeZone The time zone for the container nil
firefox.nodeSelector Node label to use for scheduling of firefox images if set this takes precedence over the global value nil
firefox.affinity Deployemnt affinities to use for scheduling of the firefox if set this takes precedence over the global value nil
firefox.tolerations Deployment tolerations to use for scheduling of the firefox if set this takes precedence over the global value nil
firefoxDebug.enabled Schedule a selenium node firefox debug pod false
firefoxDebug.runAsDaemonSet Schedule selenium node firefox debug pods as DaemonSet false
firefoxDebug.image The selenium node firefox debug image selenium/node-firefox-debug
firefoxDebug.tag The selenium node firefox debug tag 3.141.59
firefoxDebug.imagePullSecrets The secret to use for pulling the image. Will override the global parameter if set nil
firefoxDebug.pullPolicy The selenium node firefox debug pull policy IfNotPresent
firefoxDebug.replicas The number of selenium node firefox debug pods. This is ignored if runAsDaemonSet is enabled. 1
firefoxDebug.enableLivenessProbe When true will add a liveness check to the pod false
firefoxDebug.waitForRunningSessions When true will wait for current running sessions to finish before terminating the pod false
firefoxDebug.podAnnotations Annotations on the firefox debug pods {}
firefoxDebug.podLabels Additional labels on the firefox debug pods {}
firefoxDebug.securityContext SecurityContext on the firefox debug pods {"runAsUser": 1000, "fsGroup": 1000}
firefoxDebug.extraEnvs Any additional environment variables to set in the pods []
firefoxDebug.javaOpts The java options for a selenium node firefox debug JVM, default sets the max heap size to 900 mb -Xmx900m
firefoxDebug.volumeMounts Additional volumes to mount, the default provides a larger shared [{"mountPath":"/dev/shm", "name":"dshm"}]
firefoxDebug.volumes Additional volumes import, the default provides a larger shared [{"name":"dshm", "emptyDir":{"medium":"Memory"}}]
firefoxDebug.resources The resources for the selenium node firefox debug container, defaults to minimum half a cpu and maximum 1,000 mb {"limits":{"cpu":".5", "memory":"1000Mi"}}
firefoxDebug.screenWidth nil
firefoxDebug.screenHeight nil
firefoxDebug.screenDepth nil
firefoxDebug.display The vnc display nil
firefoxDebug.firefoxVersion The version of firefox to use nil
firefoxDebug.nodeMaxInstances The maximum number of browser instances nil
firefoxDebug.nodeMaxSession The maximum number of sessions nil
firefoxDebug.nodeRegistryCycle The number of milliseconds to wait, registering a node nil
firefoxDebug.nodePort The port to listen on nil
firefoxDebug.seOpts Command line arguments to pass to node nil
firefoxDebug.timeZone The time zone for the container nil
firefoxDebug.nodeSelector Node label to use for scheduling of firefoxDebug images if set this takes precedence over the global value nil
firefoxDebug.affinity Deployemnt affinities to use for scheduling of the firefoxDebug if set this takes precedence over the global value nil
firefoxDebug.tolerations Deployment tolerations to use for scheduling of the firefoxDebug if set this takes precedence over the global value nil

Specify each parameter using the --set key=value[,key=value] argument to helm install. For example,

$ helm install my-grid \
  --set chrome.enabled=true \
  ta-chart/selenium3

Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,

$ helm install my-grid -f values.yaml ta-chart/selenium3

Tip: You can use the default values.yaml