Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[🐛 Bug]: Helm Chart not working with only Hub + Relay node #2571

Open
biggiethehacker opened this issue Jan 9, 2025 · 1 comment
Open

Comments

@biggiethehacker
Copy link

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
Copy link

github-actions bot commented Jan 9, 2025

@biggiethehacker, thank you for creating this issue. We will troubleshoot it as soon as we can.


Info for maintainers

Triage this issue by using labels.

If information is missing, add a helpful comment and then I-issue-template label.

If the issue is a question, add the I-question label.

If the issue is valid but there is no time to troubleshoot it, consider adding the help wanted label.

If the issue requires changes or fixes from an external project (e.g., ChromeDriver, GeckoDriver, MSEdgeDriver, W3C), add the applicable G-* label, and it will provide the correct link and auto-close the issue.

After troubleshooting the issue, please add the R-awaiting answer label.

Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant