You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to Selenium Users
Hi
for some reason I'm getting a lot of failures with reason of "invalid session id".
didn't fined any good explanation about the root cause.
can anyone help me understander what I'm doing wrong?
this is my configuration:
global: # Public IP of the host running Kubernetes cluster. # This is used to access the Selenium Grid from outside the cluster when ingress is disabled or enabled without a hostname is set. # This is part of constructing SE_NODE_GRID_URL and rewrite URL of `se:vnc`, `se:cdp` in the capabilities when `ingress.hostname` is unset K8S_PUBLIC_IP: "" seleniumGrid: # Image registry for all selenium components imageRegistry: selenium # Image tag for all selenium components imageTag: 4.21.0-20240522 # Image tag for browser's nodes nodesImageTag: 4.21.0-20240522 # Image tag for browser's video recorder videoImageTag: ffmpeg-6.1-20231219 # Pull secret for all components, can be overridden individually imagePullSecret: "" # Log level for all components. Possible values describe here: https://www.selenium.dev/documentation/grid/configuration/cli_options/#logging logLevel: FINEST
# Basic auth settings for Selenium Grid basicAuth: # Enable or disable basic auth enabled: true # Username for basic auth username: admin # Password for basic auth password: admin
# Service Account for all components serviceAccount: create: true name: "" annotations: {} # eks.amazonaws.com/role-arn: "arn:aws:iam::12345678:role/video-bucket-permissions" # Resources for chrome-node container resources: requests: memory: "1Gi" cpu: "1" limits: memory: "1Gi" cpu: "1" # Configure the ingress resource to access the Grid installation. ingress: # Enable or disable ingress resource enabled: true # Name of ingress class to select which controller will implement ingress resource className: "" # Refer to list nginx annotations: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md#annotations nginx: proxyTimeout: 3600 proxyBuffer: size: 512M number: 4 ports: http: 80 https: 443 # Custom annotations for ingress resource annotations: {} # Default host for the ingress resource hostname: "" # Default host path for the ingress resource path: / # Default path type for the ingress resource pathType: Prefix # List of paths for the ingress resource. This will override the default path paths: [] # TLS backend configuration for ingress resource tls: []
# ConfigMap that contains SE_EVENT_BUS_HOST, SE_EVENT_BUS_PUBLISH_PORT and SE_EVENT_BUS_SUBSCRIBE_PORT variables busConfigMap: # Name of the configmap name: selenium-event-bus-config # Custom annotations for configmap annotations: {}
# ConfigMap that contains common environment variables for browser nodes nodeConfigMap: name: selenium-node-config # Custom annotations for configmap annotations: {}
# 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
# Number of chrome nodes replicas: 5 # imageRegistry: selenium # Image of chrome nodes imageName: node-chrome # Image of chrome nodes (this overwrites global.seleniumGrid.nodesImageTag) # imageTag: 4.21.0-20240522 # 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: "" # Port list to enable on container ports: - 5555 - 6000 - 7900 - 6080 # Selenium port (spec.ports[0].targetPort in kubernetes service) seleniumPort: 5900 # Selenium port exposed in service (spec.ports[0].port in kubernetes service) seleniumServicePort: 6900 # Annotations for chrome-node pods annotations: {} # Labels for chrome-node pods labels: {} # Resources for chrome-node container resources: requests: memory: "1Gi" cpu: "1" limits: memory: "1Gi" cpu: "1" # SecurityContext for chrome-node container securityContext: {} # Tolerations for chrome-node pods tolerations: [] # Node selector for chrome-node pods nodeSelector: {} # Custom host aliases for chrome nodes hostAliases: # - ip: "198.51.100.0" # hostnames: # - "example.com" # - "example.net" # - ip: "203.0.113.0" # hostnames: # - "example.org" # Custom environment variables for chrome 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 chrome nodes extraEnvFrom: # - configMapRef: # name: proxy-settings # - secretRef: # name: mysecret # Service configuration service: # Create a service for node enabled: true # 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: node-port # port: 5555 # targetPort: 5555 # Custom annotations for service annotations: {} # Size limit for DSH volume mounted in container (if not set, default is "1Gi") dshmVolumeSizeLimit: 1Gi # Priority class name for chrome-node pods priorityClassName: "" # Wait for pod startup startupProbe: # httpGet: # path: /status # port: 5555 # failureThreshold: 120 # periodSeconds: 5 # Liveness probe settings livenessProbe: {}
# Override the scaled options for chrome nodes # scaledOptions: # scaledJobOptions: # scaledObjectOptions: hpa: url: '{{ include "seleniumGrid.graphqlURL" . }}' browserName: chrome sessionBrowserName: 'chrome' # browserVersion: '91.0' # Optional. Only required when supporting multiple versions of browser in your Selenium Grid. unsafeSsl: '{{ include "seleniumGrid.graphqlURL.unsafeSsl" . }}' # Optional # It is used to add a 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: []
# 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
# Number of firefox nodes replicas: 1 # imageRegistry: selenium # Image of firefox nodes imageName: node-firefox # Image of firefox nodes (this overwrites global.seleniumGrid.nodesImageTag) # imageTag: 4.21.0-20240522 # 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: "" # Port list to enable on container ports: - 5555 # Selenium port (spec.ports[0].targetPort in kubernetes service) seleniumPort: 5900 # Selenium port exposed in service (spec.ports[0].port in kubernetes service) seleniumServicePort: 6900 # Annotations for firefox-node pods annotations: {} # Labels for firefox-node pods labels: {} # Tolerations for firefox-node pods tolerations: [] # Node selector for firefox-node pods nodeSelector: {} # Resources for firefox-node container resources: requests: memory: "1Gi" cpu: "1" limits: memory: "1Gi" cpu: "1" # SecurityContext for firefox-node container securityContext: {} # Custom host aliases for firefox nodes hostAliases: # - ip: "198.51.100.0" # hostnames: # - "example.com" # - "example.net" # - ip: "203.0.113.0" # hostnames: # - "example.org" # Custom environment variables for firefox 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 firefox nodes extraEnvFrom: # - configMapRef: # name: proxy-settings # - secretRef: # name: mysecret # Service configuration service: # Create a service for node enabled: true # 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: node-port # port: 5555 # targetPort: 5555 # Custom annotations for service annotations: {} # Size limit for DSH volume mounted in container (if not set, default is "1Gi") dshmVolumeSizeLimit: 1Gi # Priority class name for firefox-node pods priorityClassName: "" # Wait for pod startup startupProbe: {} # httpGet: # path: /status # port: 5555 # failureThreshold: 120 # periodSeconds: 5 # Liveness probe settings livenessProbe: {}
# Time to wait for pod termination terminationGracePeriodSeconds: 30 lifecycle: {} extraVolumeMounts: [] # - name: my-extra-volume # mountPath: /home/seluser/Downloads extraVolumes: [] # - name: my-extra-volume # emptyDir: {} # - name: my-extra-volume-from-pvc # persistentVolumeClaim: # claimName: my-pv-claim # Override the scaled options for firefox nodes # scaledOptions: # scaledJobOptions: # scaledObjectOptions: hpa: url: '{{ include "seleniumGrid.graphqlURL" . }}' browserName: firefox sessionBrowserName: 'firefox' unsafeSsl: '{{ include "seleniumGrid.graphqlURL.unsafeSsl" . }}' # Optional # It is used to add a 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: []
# 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
# Number of edge nodes replicas: 1 # imageRegistry: selenium # Image of edge nodes imageName: node-edge # Image of edge nodes (this overwrites global.seleniumGrid.nodesImageTag) # imageTag: 4.21.0-20240522 # 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: "" ports: - 5555 # Selenium port (spec.ports[0].targetPort in kubernetes service) seleniumPort: 5900 # Selenium port exposed in service (spec.ports[0].port in kubernetes service) seleniumServicePort: 6900 # Annotations for edge-node pods annotations: {} # Labels for edge-node pods labels: {} # Tolerations for edge-node pods tolerations: [] # Node selector for edge-node pods nodeSelector: {} # Resources for edge-node container resources: requests: memory: "1Gi" cpu: "1" limits: memory: "1Gi" cpu: "1" # SecurityContext for edge-node container securityContext: {} # Custom host aliases for edge nodes hostAliases: # - ip: "198.51.100.0" # hostnames: # - "example.com" # - "example.net" # - ip: "203.0.113.0" # hostnames: # - "example.org" # Custom environment variables for edge 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 edge 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: node-port # port: 5555 # targetPort: 5555 # Custom annotations for service annotations: {} # Size limit for DSH volume mounted in container (if not set, default is "1Gi") dshmVolumeSizeLimit: 1Gi # Priority class name for edge-node pods priorityClassName: "" # Wait for pod startup startupProbe: {} # httpGet: # path: /status # port: 5555 # failureThreshold: 120 # periodSeconds: 5 # Liveness probe settings livenessProbe: {}
# Time to wait for pod termination terminationGracePeriodSeconds: 30 lifecycle: {} extraVolumeMounts: [] # - name: my-extra-volume # mountPath: /home/seluser/Downloads extraVolumes: [] # - name: my-extra-volume # emptyDir: {} # - name: my-extra-volume-from-pvc # persistentVolumeClaim: # claimName: my-pv-claim # Override the scaled options for edge nodes # scaledOptions: # scaledJobOptions: # scaledObjectOptions: hpa: url: '{{ include "seleniumGrid.graphqlURL" . }}' browserName: MicrosoftEdge sessionBrowserName: 'msedge' unsafeSsl: '{{ include "seleniumGrid.graphqlURL.unsafeSsl" . }}' # Optional # It is used to add a 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: []
videoRecorder: enabled: false # imageRegistry: selenium # Image of video recorder imageName: video # Image of video recorder # imageTag: ffmpeg-6.1-20231219 # 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/) # What uploader to use. See .videRecorder.s3 for how to create a new one. # uploader: s3 uploader: s3 # Where to upload the video file. Should be set to something like 's3://myvideobucket/' uploadDestinationPrefix: /opt/selenium_records/
ports: - 9000 resources: requests: memory: "1Gi" cpu: "1" limits: memory: "1Gi" cpu: "1" extraEnvironmentVariables: # - name: SE_VIDEO_FOLDER # value: /videos # Custom environment variables by sourcing entire configMap, Secret, etc. for video recorder. extraEnvFrom: # - configMapRef: # name: proxy-settings # - secretRef: # name: mysecret # Wait for pod startup terminationGracePeriodSeconds: 30
volume: name: # folder: video # scripts: video-scripts # Custom video recorder back-end scripts (video.sh, video_ready.py, etc.) further by ConfigMap. # NOTE: For the mount point with the name "video", or "video-scripts", it will override the default. For other names, it will be appended. extraVolumeMounts: # - name: video-scripts # mountPath: /opt/bin/video.sh # subPath: custom_video.sh # - name: video-scripts # mountPath: /opt/bin/video_ready.py # subPath: video_ready.py extraVolumes: # - name: video-scripts # configMap: # name: my-video-scripts-cm # defaultMode: 0500 # - name: video # persistentVolumeClaim: # claimName: video-pv-claim # Container spec for the uploader if above it is defined as "uploader: s3" s3: imageName: public.ecr.aws/bitnami/aws-cli imageTag: "2" imagePullPolicy: IfNotPresent securityContext: runAsUser: 0 command: - /bin/sh args: - -c - | while ! [ -p /videos/uploadpipe ] do echo Waiting for /videos/uploadpipe to be created sleep 1 done echo Waiting for files to upload while read FILE DESTINATION < /videos/uploadpipe do if [ "$FILE" = "exit" ] then echo "$FILE" break else echo "Uploading $FILE to $DESTINATION" aws s3 cp --no-progress $FILE $DESTINATION fi done extraEnvironmentVariables: # - name: AWS_ACCESS_KEY_ID # value: aws_access_key_id # - name: AWS_SECRET_ACCESS_KEY # value: aws_secret_access_key # - name: # valueFrom: # secretKeyRef: # name: secret-name # key: secret-key # Custom labels for k8s resources customLabels: {}
# Configuration for dependency chart keda keda: http: timeout: 90000 webhooks: enabled: true