-
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Closed
Labels

Description
What happened?
The Helm chart seems to break when running only Selenium Hub and Relay Nodes in non-isolated mode. Basically, the only components I have enabled are the hub and the relay but the relay node is complaining about the video recorder.
Command used to start Selenium Grid with Docker (or Kubernetes)
Values:
# Configuration for relay nodes
relayNode:
# -- Enable relay nodes
enabled: true
# -- NOTE: Only used when autoscaling.enabled is false
# Enable creation of Deployment
# true (default) - if you want long-living pods
# false - for provisioning your own custom type such as Jobs
deploymentEnabled: true
# -- Global update strategy will be overwritten by individual component
updateStrategy:
type: RollingUpdate
# -- Number of relay nodes
replicas: 1
# -- Registry to pull the image (this overwrites global.seleniumGrid.imageRegistry parameter)
imageRegistry:
# -- Image of relay nodes
imageName: node-base
# -- Image of relay nodes (this overwrites global.seleniumGrid.nodesImageTag)
imageTag:
# -- Image pull policy (see https://kubernetes.io/docs/concepts/containers/images/#updating-images)
imagePullPolicy: IfNotPresent
# -- Image pull secret (see https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/)
imagePullSecret: ""
# -- Extra ports list to enable on the node container (e.g. SSH, VNC, NoVNC, etc.)
ports: []
# - 5900
# - 7900
# -- Node component port
port: 5555
# -- Node component expose NodePort
nodePort:
# -- Specify affinity for relay-node pods, this overwrites global.seleniumGrid.affinity parameter
affinity: {}
# -- Specify topologySpreadConstraints for relay-node pods, this overwrites global.seleniumGrid.topologySpreadConstraints parameter
topologySpreadConstraints: []
# -- Annotations for relay-node pods
annotations: {}
# -- Labels for relay-node pods
labels: {}
# -- Shared process namespace for relay-node pods
shareProcessNamespace: true
# Resources for relay-node container
resources:
# -- Request resources for relay-node pods
requests:
memory: "1Gi"
cpu: "1"
# -- Limit resources for relay-node pods
limits:
memory: "2Gi"
cpu: "1"
# -- SecurityContext for relay-node container
securityContext: {}
# -- Tolerations for relay-node pods
tolerations: []
# -- Node selector for relay-node pods
nodeSelector: {}
# -- Custom host aliases for relay nodes
hostAliases:
# - ip: "198.51.100.0"
# hostnames:
# - "example.com"
# - "example.net"
# - ip: "203.0.113.0"
# hostnames:
# - "example.org"
# -- Custom environment variables for relay nodes
extraEnvironmentVariables: []
# - name: SE_JAVA_OPTS
# value: "-Xmx512m"
# - name:
# valueFrom:
# secretKeyRef:
# name: secret-name
# key: secret-key
# -- Custom environment variables by sourcing entire configMap, Secret, etc. for relay nodes
extraEnvFrom: []
# - configMapRef:
# name: proxy-settings
# - secretRef:
# name: mysecret
# Service configuration
service:
# -- Create a service for node
enabled: false
# -- Service type
type: ClusterIP
# -- Set specific loadBalancerIP when serviceType is LoadBalancer (see https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer)
loadBalancerIP: ""
# -- Extra ports exposed in node service
ports:
# - name: vnc-port
# port: 5900
# targetPort: 5900
# -- Custom annotations for service
annotations: {}
# -- Size limit for DSH volume mounted in container (if not set, default is disabled, e.g "1Gi")
dshmVolumeSizeLimit: ""
# -- Priority class name for relay-node pods
priorityClassName: ""
# -- Startup probe settings
startupProbe:
enabled: true
path: /status
initialDelaySeconds: 0
periodSeconds: 5
timeoutSeconds: 60
failureThreshold: 12
successThreshold: 1
# -- Readiness probe settings
readinessProbe:
enabled: false
path: /status
initialDelaySeconds: 10
failureThreshold: 10
timeoutSeconds: 10
periodSeconds: 10
successThreshold: 1
# -- Liveness probe settings
livenessProbe:
enabled: false
path: /status
initialDelaySeconds: 30
failureThreshold: 6
timeoutSeconds: 60
periodSeconds: 10
successThreshold: 1
# -- Time to wait for pod termination
terminationGracePeriodSeconds: 30
# -- Define preStop command to shut down the relay node gracefully. This overwrites autoscaling.deregisterLifecycle
deregisterLifecycle:
# -- Define postStart and preStop events. This overwrites the defined preStop in deregisterLifecycle if any
lifecycle: {}
# -- Extra volume mounts for relay-node container
extraVolumeMounts: []
# - name: my-extra-volume
# mountPath: /home/seluser/Downloads
# -- Extra volumes for relay-node pod
extraVolumes: []
# - name: my-extra-volume
# emptyDir: {}
# - name: my-extra-volume-from-pvc
# persistentVolumeClaim:
# claimName: my-pv-claim
# -- Override the number of max sessions per node
nodeMaxSessions:
# -- Override the scaled options for relay nodes
scaledOptions:
# -- Override the scaledJobOptions for relay nodes
scaledJobOptions:
# -- Override the scaledObjectOptions for relay nodes
scaledObjectOptions:
hpa:
# -- browserName should match with Node stereotype and request capability is scaled by this scaler
browserName: "chrome"
# -- sessionBrowserName if the browserName is different from the sessionBrowserName
sessionBrowserName: ""
# -- browserVersion should match with Node stereotype and request capability is scaled by this scaler
browserVersion: ""
# -- platformName should match with Node stereotype and request capability is scaled by this scaler
platformName: "Android"
# -- Skip check SSL when connecting to the Graphql endpoint
unsafeSsl: '{{ template "seleniumGrid.graphqlURL.unsafeSsl" . }}' # Optional
# -- It is used to add initContainers in the same pod of the browser node.
# It should be set using the --set-json option
initContainers: []
# -- It is used to add sidecars proxy in the same pod of the browser node.
# It means it will add a new container to the deployment itself.
# It should be set using the --set-json option
sidecars: []
# -- Override specific video recording settings for edge node
videoRecorder: {}
# Video recording configuration for all browser nodes. Can be overridden by each browser node
videoRecorder:
# -- Enable video recording in all browser nodes
enabled: false
### Relevant log output
```shell
Error:
helm template ./ --debug
install.go:224: 2025-01-09 14:11:15.6668769 +0530 IST m=+0.093294401 [debug] Original chart version: ""
install.go:241: 2025-01-09 14:11:15.6674273 +0530 IST m=+0.093844801 [debug] CHART PATH: C:\Users\<redacted>\Workspace\selenium-grid
Error: template: selenium-grid/templates/relay-node-deployment.yaml:36:71: executing "selenium-grid/templates/relay-node-deployment.yaml" at <.Values.videoRecorder.uploader.name>: nil pointer evaluating interface {}.videoRecorder
helm.go:86: 2025-01-09 14:11:15.9435921 +0530 IST m=+0.370009601 [debug] template: selenium-grid/templates/relay-node-deployment.yaml:36:71: executing "selenium-grid/templates/relay-node-deployment.yaml" at <.Values.videoRecorder.uploader.name>: nil pointer evaluating interface {}.videoRecorder
### Operating System
Windows 10
### Docker Selenium version (image tag)
4.27.0
### Selenium Grid chart version (chart version)
0.38.4