Skip to content

[πŸ› Bug]: Cannot install Helm Chart >= 0.33.0 - "Secret 'helm-operation-xxxx' is invalid"Β #2503

@LQuartier

Description

@LQuartier

What happened?

Hello,
i'm currently running the Helm Chart Version 0.32.0, albeit with image Tags for 4.24.0
We're using:

Rancher Version 2.9.3
Helm v2.16.8-rancher2
Kubernetes v1.30.5+rke2r1

I've tried upgrading the Helm Chart to newer Version multiple times in the past, but i'm always running into this Error:

Secret "helm-operation-xxxx" is invalid: data: Too long: must have at most 1048576 bytes

Versions 0.32.0 and lower work fine.
I am not sure what i can try on my end to make the upgrade Possible.
If you have any Pointers, i would be grateful.

Command used to start Selenium Grid with Docker (or Kubernetes)

autoscaling:
  annotations:
    helm.sh/hook: post-install,post-upgrade,post-rollback
    helm.sh/hook-weight: '1'
  deregisterLifecycle: null
  enableWithExistingKEDA: false
  enabled: false
  patchObjectFinalizers:
    activeDeadlineSeconds: 120
    annotations:
      helm.sh/hook: post-install,post-upgrade,post-rollback,pre-delete
      helm.sh/hook-delete-policy: hook-succeeded,before-hook-creation
      helm.sh/hook-weight: '-1'
    enabled: true
  scaledJobOptions:
    failedJobsHistoryLimit: 0
    jobTargetRef:
      backoffLimit: 0
      completions: 1
      parallelism: 1
    scalingStrategy:
      strategy: default
    successfulJobsHistoryLimit: 0
  scaledObjectOptions:
    scaleTargetRef:
      kind: Deployment
  scaledOptions:
    maxReplicaCount: 16
    minReplicaCount: 0
    pollingInterval: 10
  scalingType: job
  terminationGracePeriodSeconds: 3600
basicAuth:
  enabled: false
  password: admin
  username: admin
busConfigMap:
  annotations: {}
chromeNode:
  annotations: {}
  deploymentEnabled: true
  deregisterLifecycle: null
  dshmVolumeSizeLimit: 1Gi
  enabled: true
  extraEnvFrom: null
  extraEnvironmentVariables:
    - name: SE_OPTS
      value: '--enable-managed-downloads true'
    - name: TZ
      value: Europe/Berlin
    - name: SCREEN_WIDTH
      value: '1920'
    - name: SCREEN_HEIGHT
      value: '1080'
    - name: SCREEN_DEPTH
      value: '24'
    - name: SE_NODE_SESSION_TIMEOUT
      value: '300'
    - name: SE_VNC_NO_PASSWORD
      value: '1'
    - name: SE_VNC_VIEW_ONLY
      value: '1'
  extraVolumeMounts: []
  extraVolumes: []
  hostAliases: null
  hpa:
    browserName: chrome
    platformName: linux
    sessionBrowserName: chrome
    unsafeSsl: '{{ template "seleniumGrid.graphqlURL.unsafeSsl" . }}'
    url: '{{ template "seleniumGrid.graphqlURL" . }}'
  imageName: node-chrome
  imagePullPolicy: IfNotPresent
  imagePullSecret: ''
  initContainers: []
  labels: {}
  lifecycle: {}
  livenessProbe:
    enabled: false
    failureThreshold: 6
    initialDelaySeconds: 30
    path: /status
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 60
  nodePort: null
  nodeSelector: {}
  port: 5555
  ports: []
  priorityClassName: ''
  readinessProbe:
    enabled: false
    failureThreshold: 10
    initialDelaySeconds: 10
    path: /status
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 10
  replicas: 60
  resources:
    limits:
      memory: 2Gi
    requests:
      memory: 2Gi
  securityContext: {}
  service:
    annotations: {}
    enabled: true
    loadBalancerIP: ''
    ports: null
    type: ClusterIP
  sidecars: []
  startupProbe:
    enabled: true
    failureThreshold: 12
    initialDelaySeconds: 0
    path: /status
    periodSeconds: 5
    successThreshold: 1
    timeoutSeconds: 60
  terminationGracePeriodSeconds: 30
  tolerations: []
  scaledOptions:
    maxReplicaCount: 20
    minReplicaCount: 5
    pollingInterval: 10
components:
  distributor:
    annotations: {}
    imageName: distributor
    imagePullPolicy: IfNotPresent
    imagePullSecret: ''
    livenessProbe:
      enabled: true
      failureThreshold: 10
      initialDelaySeconds: 10
      path: /readyz
      periodSeconds: 10
      successThreshold: 1
      timeoutSeconds: 10
    newSessionThreadPoolSize: null
    nodePort: 30553
    nodeSelector: {}
    port: 5553
    priorityClassName: ''
    readinessProbe:
      enabled: true
      failureThreshold: 10
      initialDelaySeconds: 12
      path: /readyz
      periodSeconds: 10
      successThreshold: 1
      timeoutSeconds: 10
    resources: {}
    securityContext: {}
    serviceAnnotations: {}
    serviceType: ClusterIP
    startupProbe:
      enabled: true
      failureThreshold: 10
      initialDelaySeconds: 5
      path: /readyz
      periodSeconds: 10
      successThreshold: 1
      timeoutSeconds: 10
    tolerations: []
  eventBus:
    annotations: {}
    imageName: event-bus
    imagePullPolicy: IfNotPresent
    imagePullSecret: ''
    nodePort: 30557
    nodeSelector: {}
    port: 5557
    priorityClassName: ''
    publishNodePort: 30442
    publishPort: 4442
    resources: {}
    securityContext: {}
    serviceAnnotations: {}
    serviceType: ClusterIP
    subscribeNodePort: 30443
    subscribePort: 4443
    tolerations: []
  extraEnvFrom: null
  extraEnvironmentVariables:
    - name: SE_SESSION_REQUEST_TIMEOUT
      value: '3600'
  router:
    annotations: {}
    disableUI: false
    imageName: router
    imagePullPolicy: IfNotPresent
    imagePullSecret: ''
    livenessProbe:
      enabled: true
      failureThreshold: 10
      initialDelaySeconds: 10
      path: /readyz
      periodSeconds: 10
      successThreshold: 1
      timeoutSeconds: 10
    loadBalancerIP: ''
    nodePort: 30444
    nodeSelector: {}
    port: 4444
    priorityClassName: ''
    readinessProbe:
      enabled: true
      failureThreshold: 10
      initialDelaySeconds: 12
      path: /readyz
      periodSeconds: 10
      successThreshold: 1
      timeoutSeconds: 10
    resources: {}
    securityContext: {}
    serviceAnnotations: {}
    serviceType: ClusterIP
    startupProbe:
      enabled: true
      failureThreshold: 10
      initialDelaySeconds: 5
      path: /readyz
      periodSeconds: 10
      successThreshold: 1
      timeoutSeconds: 10
    tolerations: []
  sessionMap:
    annotations: {}
    imageName: sessions
    imagePullPolicy: IfNotPresent
    imagePullSecret: ''
    nodeSelector: {}
    port: 5556
    priorityClassName: ''
    resources: {}
    securityContext: {}
    serviceAnnotations: {}
    serviceType: ClusterIP
    tolerations: []
  sessionQueue:
    annotations: {}
    imageName: session-queue
    imagePullPolicy: IfNotPresent
    imagePullSecret: ''
    nodePort: 30559
    nodeSelector: {}
    port: 5559
    priorityClassName: ''
    resources: {}
    securityContext: {}
    serviceAnnotations: {}
    serviceType: ClusterIP
    tolerations: []
  subPath: ''
customLabels: {}
distributorConfigMap:
  annotations: {}
  defaultMode: 493
  extraScripts:
    distributorProbe.sh: ''
  extraScriptsDirectory: /opt/selenium
  extraScriptsImportFrom: configs/distributor/**
  scriptVolumeMountName: null
edgeNode:
  annotations: {}
  deploymentEnabled: true
  deregisterLifecycle: null
  dshmVolumeSizeLimit: 1Gi
  enabled: true
  extraEnvFrom: null
  extraEnvironmentVariables:
    - name: SE_OPTS
      value: '--enable-managed-downloads true'
    - name: TZ
      value: Europe/Berlin
    - name: SCREEN_WIDTH
      value: '1920'
    - name: SCREEN_HEIGHT
      value: '1080'
    - name: SCREEN_DEPTH
      value: '24'
    - name: SE_NODE_SESSION_TIMEOUT
      value: '330'
    - name: SE_VNC_NO_PASSWORD
      value: '1'
    - name: SE_VNC_VIEW_ONLY
      value: '1'
  extraVolumeMounts: []
  extraVolumes: []
  hostAliases: null
  hpa:
    browserName: MicrosoftEdge
    platformName: linux
    sessionBrowserName: msedge
    unsafeSsl: '{{ template "seleniumGrid.graphqlURL.unsafeSsl" . }}'
    url: '{{ template "seleniumGrid.graphqlURL" . }}'
  imageName: node-edge
  imagePullPolicy: IfNotPresent
  imagePullSecret: ''
  initContainers: []
  labels: {}
  lifecycle: {}
  livenessProbe:
    enabled: false
    failureThreshold: 6
    initialDelaySeconds: 30
    path: /status
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 60
  nodePort: null
  nodeSelector: {}
  port: 5555
  ports: []
  priorityClassName: ''
  readinessProbe:
    enabled: false
    failureThreshold: 10
    initialDelaySeconds: 10
    path: /status
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 10
  replicas: 0
  resources:
    limits:
      memory: 2Gi
    requests:
      memory: 2Gi
  securityContext: {}
  service:
    annotations: {}
    enabled: true
    loadBalancerIP: ''
    ports: null
    type: ClusterIP
  sidecars: []
  startupProbe:
    enabled: true
    failureThreshold: 12
    initialDelaySeconds: 0
    path: /status
    periodSeconds: 5
    successThreshold: 1
    timeoutSeconds: 60
  terminationGracePeriodSeconds: 30
  tolerations: []
  scaledOptions:
    maxReplicaCount: 2
    minReplicaCount: 0
    pollingInterval: 20
firefoxNode:
  annotations: {}
  deploymentEnabled: true
  deregisterLifecycle: null
  dshmVolumeSizeLimit: 1Gi
  enabled: true
  extraEnvFrom: null
  extraEnvironmentVariables:
    - name: SE_OPTS
      value: '--enable-managed-downloads true'
    - name: TZ
      value: Europe/Berlin
    - name: SCREEN_WIDTH
      value: '1920'
    - name: SCREEN_HEIGHT
      value: '1080'
    - name: SCREEN_DEPTH
      value: '24'
    - name: SE_NODE_SESSION_TIMEOUT
      value: '300'
    - name: SE_VNC_NO_PASSWORD
      value: '1'
    - name: SE_VNC_VIEW_ONLY
      value: '1'
  extraVolumeMounts: []
  extraVolumes: []
  hostAliases: null
  hpa:
    browserName: firefox
    platformName: linux
    sessionBrowserName: firefox
    unsafeSsl: '{{ template "seleniumGrid.graphqlURL.unsafeSsl" . }}'
    url: '{{ template "seleniumGrid.graphqlURL" . }}'
  imageName: node-firefox
  imagePullPolicy: IfNotPresent
  imagePullSecret: ''
  initContainers: []
  labels: {}
  lifecycle: {}
  livenessProbe:
    enabled: false
    failureThreshold: 6
    initialDelaySeconds: 30
    path: /status
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 60
  nodePort: null
  nodeSelector: {}
  port: 5555
  ports: []
  priorityClassName: ''
  readinessProbe:
    enabled: false
    failureThreshold: 10
    initialDelaySeconds: 10
    path: /status
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 10
  replicas: 0
  resources:
    limits:
      memory: 2Gi
    requests:
      memory: 2Gi
  securityContext: {}
  service:
    annotations: {}
    enabled: true
    loadBalancerIP: ''
    ports: null
    type: ClusterIP
  sidecars: []
  startupProbe:
    enabled: true
    failureThreshold: 12
    initialDelaySeconds: 0
    path: /status
    periodSeconds: 5
    successThreshold: 1
    timeoutSeconds: 60
  terminationGracePeriodSeconds: 30
  tolerations: []
  scaledOptions:
    maxReplicaCount: 2
    minReplicaCount: 0
    pollingInterval: 20
global:
  K8S_PUBLIC_IP: ''
  seleniumGrid:
    defaultComponentLivenessProbe: exec
    defaultNodeLivenessProbe: exec
    defaultNodeStartupProbe: exec
    imagePullSecret: ''
    imageRegistry: selenium
    imageTag: 4.24.0
    kubectlImage: bitnami/kubectl:latest
    logLevel: INFO
    nodesImageTag: 4.24.0
    stdoutProbeLog: false
    videoImageTag: ffmpeg-6.1.1-20240621
  cattle:
    systemProjectId: p-rdbwg
hub:
  annotations: {}
  disableUI: false
  extraEnvFrom: null
  extraEnvironmentVariables:
    - name: SE_SESSION_REQUEST_TIMEOUT
      value: '3600'
  extraVolumeMounts: []
  extraVolumes: []
  imageName: hub
  imagePullPolicy: IfNotPresent
  imagePullSecret: ''
  labels: {}
  livenessProbe:
    enabled: true
    failureThreshold: 10
    initialDelaySeconds: 10
    path: /readyz
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 10
  loadBalancerIP: ''
  newSessionThreadPoolSize: null
  nodePort: 31444
  nodeSelector: {}
  port: 4444
  priorityClassName: ''
  publishNodePort: 31442
  publishPort: 4442
  readinessProbe:
    enabled: true
    failureThreshold: 10
    initialDelaySeconds: 12
    path: /readyz
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 10
  resources: {}
  securityContext: {}
  serviceAnnotations: {}
  serviceType: ClusterIP
  startupProbe:
    enabled: true
    failureThreshold: 10
    initialDelaySeconds: 5
    path: /readyz
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 10
  subPath: /
  subscribeNodePort: 31443
  subscribePort: 4443
  tolerations: []
ingress:
  annotations:
    haproxy-ingress.github.io/proxy-body-size: 40m
    haproxy-ingress.github.io/rewrite-target: /
    haproxy-ingress.github.io/timeout-client: 3600s
    haproxy-ingress.github.io/timeout-connect: 3600s
    haproxy-ingress.github.io/timeout-http-request: 3600s
    haproxy-ingress.github.io/timeout-keep-alive: 3600s
    haproxy-ingress.github.io/timeout-server: 3600s
  className: haproxydefault
  enabled: true
  hostname: our.hostname
  nginx:
    proxyBuffer:
      number: 4
      size: 512M
    proxyTimeout: 3600
  path: /
  pathType: Prefix
  paths: []
  ports:
    http: 80
    https: 443
  tls: []
ingress-nginx:
  controller:
    admissionWebhooks:
      enabled: false
  enabled: false
isolateComponents: true
jaeger:
  agent:
    enabled: false
  allInOne:
    enabled: true
    extraEnv:
      - name: QUERY_BASE_PATH
        value: /jaeger
  collector:
    enabled: false
  provisionDataStore:
    cassandra: false
  query:
    enabled: false
  storage:
    type: badger
keda:
  additionalAnnotations: null
  http:
    timeout: 60000
  webhooks:
    enabled: false
loggingConfigMap:
  annotations: {}
monitoring:
  enabled: false
nodeConfigMap:
  annotations: {}
  defaultMode: 493
  extraScripts:
    nodePreStop.sh: ''
    nodeProbe.sh: ''
  extraScriptsDirectory: /opt/selenium
  extraScriptsImportFrom: configs/node/**
  leftoversCleanup:
    browserElapsedTimeInSecs: 7200
    enabled: false
    jobIntervalInSecs: 3600
    tmpFilesAfterDays: 1
  scriptVolumeMountName: null
rbacRole:
  annotations: {}
  rules:
    - apiGroups:
        - keda.sh
      resources:
        - scaledjobs
      verbs:
        - get
        - list
        - patch
        - update
        - delete
    - apiGroups:
        - keda.sh
      resources:
        - scaledobjects
      verbs:
        - get
        - list
        - patch
        - update
        - delete
    - apiGroups:
        - autoscaling
      resources:
        - horizontalpodautoscalers
      verbs:
        - get
        - list
        - patch
        - update
        - delete
rbacRoleBinding:
  annotations: {}
  roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: Role
recorderConfigMap:
  annotations: {}
  defaultMode: 493
  extraScripts: null
  extraScriptsDirectory: /opt/bin
  extraScriptsImportFrom: configs/recorder/**
  scriptVolumeMountName: null
  videoVolumeMountName: videos
routerConfigMap:
  annotations: {}
  defaultMode: 493
  extraScripts:
    routerProbe.sh: ''
  extraScriptsDirectory: /opt/selenium
  extraScriptsImportFrom: configs/router/**
  scriptVolumeMountName: null
secrets:
  annotations: {}
  create: true
  env:
    SE_VNC_PASSWORD: secret
serverConfigMap:
  annotations: {}
  certVolumeMountPath: /etc/ssl/certs/selenium
  certificateFile: selenium.pem
  disableHostnameVerification: true
  env:
    SE_JAVA_OPTS: '-XX:+UseZGC -Djdk.httpclient.keepalive.timeout=600'
  privateKeyFile: selenium.pkcs8
  trustStoreFile: selenium.jks
serviceAccount:
  annotations: {}
  create: true
tls:
  certificate: null
  defaultFile:
    certificate: certs/selenium.pem
    privateKey: certs/selenium.pkcs8.base64
    trustStore: certs/selenium.jks
  enabled: false
  ingress:
    defaultCN: www.selenium.dev
    defaultDays: 3650
    defaultIPList: []
    defaultName: SeleniumHQ
    defaultSANList: []
    generateTLS: false
  privateKey: null
  registrationSecret:
    enabled: false
    value: HappyTesting
  trustStore: null
  trustStorePassword: changeit
tracing:
  enabled: false
  enabledWithExistingEndpoint: false
  exporter: otlp
  exporterEndpoint: http://{{ .Release.Name }}-jaeger-collector.{{ .Release.Namespace }}:4317
  globalAutoConfigure: true
  ingress:
    annotations: null
    enabled: true
    paths:
      - backend:
          service:
            name: '{{ .Release.Name }}-jaeger-query'
            port:
              number: 16686
        path: /jaeger
        pathType: Prefix
uploaderConfigMap:
  annotations: {}
  defaultMode: 493
  extraScripts:
    upload.sh: ''
  extraScriptsDirectory: /opt/bin
  extraScriptsImportFrom: configs/uploader/**
  scriptVolumeMountName: null
  secretFiles:
    upload.conf: '[sample]'
  secretVolumeMountName: null
videoRecorder:
  enabled: false
  extraEnvFrom: null
  extraEnvironmentVariables: null
  extraVolumeMounts: []
  extraVolumes: []
  imageName: video
  imagePullPolicy: IfNotPresent
  lifecycle: {}
  livenessProbe: {}
  ports:
    - 9000
  resources:
    limits:
      cpu: '1'
      memory: 1Gi
    requests:
      cpu: '1'
      memory: 1Gi
  s3:
    args: []
    command: []
    extraEnvironmentVariables: null
    imageName: bitnami/aws-cli
    imagePullPolicy: IfNotPresent
    imageRegistry: public.ecr.aws
    imageTag: latest
    securityContext:
      runAsUser: 0
  securityContext: null
  startupProbe: {}
  targetFolder: /videos
  terminationGracePeriodSeconds: 30
  uploader:
    configFileName: upload.conf
    destinationPrefix: null
    enabled: false
    entryPointFileName: upload.sh
    name: null
    secrets: null

Relevant log output

Secret "helm-operation-xxxx" is invalid: data: Too long: must have at most 1048576 bytes

Operating System

Kubernetes v1.30.5+rke2r1

Docker Selenium version (image tag)

4.24.0

Selenium Grid chart version (chart version)

0.33.0

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions