Search code examples
kubernetesgitlabkubernetes-helm

Upgraded gitlab runner throws `Service LoadBalancer External Address not yet available`


I am running a kubernetes single node cluster and upgraded my gitlab 14.3.2 to 14.7.0 using helm chart. This is my values.yaml file, which worked before perfectly...

global:
  edition: ce
  hosts:
    domain: domain.com
  shell:
    port: 30022
  rails:
    bootsnap:
      enabled: false
  ingress:
    class: nginx
    configureCertmanager: false
    annotations:
      cert-manager.io/cluster-issuer: letsencrypt-prod
      acme.cert-manager.io/http01-edit-in-place: "true"
certmanager:
  install: false
nginx-ingress:
  enabled: false
prometheus:
  install: false
redis:
  resources:
    requests:
      cpu: 10m
      memory: 64Mi
minio:
  ingress:
    tls:
      secretName: gitlab-minio-tls
  resources:
    requests:
      memory: 64Mi
      cpu: 10m
gitlab-runner:
  runners:
    privileged: false
gitlab:
  gitaly:
    persistence:
      size: 2Gi
  gitlab-shell:
    minReplicas: 1
    service:
      type: NodePort
      nodePort: 30022
  webservice:
    minReplicas: 1
    ingress:
      tls:
        secretName: gitlab-webservice-tls
  sidekiq:
    minReplicas: 1
  toolbox:
    enabled: false
registry:
  hpa:
    minReplicas: 1
  ingress:
    tls:
      secretName: gitlab-registry-tls

...but the new gitlab runner pod is failing. In the logs I do get the error

gitlab-gitlab-runner Service LoadBalancer External Address not yet available                                                                              

What am I missing in the values.yaml file? As I'm running a single node cluster, I do not have a load balancer. So I don't understand the error message.


Solution

  • Got the same issue. I found out a service was misconfigured, lookup into the chart and found out it was about session server.

    Then I simply disabled the sessionServer, that should be disabled by default (cf https://gitlab.com/gitlab-org/charts/gitlab-runner/-/commit/477f145bedcb68690d723826831d9c8c4f5b2d09) and I don't need it and it did the trick.

    gitlab-runner:
      sessionServer:
        enabled: false
    

    If you need it, I think you have to set some configuration, such as PublicIp. Here is the default values from here :

    ## Specify whether the runner should start the session server.
    ## Defaults to false
    ## ref: 
    ##
    ## When sessionServer is enabled, the user can either provide a public publicIP 
    ## or either rely on the external IP auto discovery
    ## When a serviceAccountName is used with the automounting to the pod disable,
    ## we recommend the usage of the publicIP
    sessionServer:
      enabled: true
      # timeout: 1800
      # internalPort: 8093
      # externalPort: 9000
      # publicIP: ""