Skip to content

Add Ingress support for Session Server

  • Please check this box if this contribution uses AI-generated content (including content generated by GitLab Duo features) as outlined in the GitLab DCO & CLA

What does this MR do?

This MR adds Ingress for Session Server.

Why was this MR needed?

In some cases, exposing Session Server via Service might not be sufficient. For example, an ingress controller already present in the cluster and you want to expose it via ingress.

Or only a few outbound ports are opened in Gitlab server so all session servers have to be exposed to the same port.

As a workaround we are using extraObjects to create Ingress resource for now:

extraObjects:
  - apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: ${name}-ingress
      annotations:
        nginx.ingress.kubernetes.io/rewrite-target: /
        nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    spec:
      ingressClassName: nginx
      rules:
        - host: ${domain_name}
          http:
            paths:
              - path: /
                pathType: Prefix
                backend:
                  service:
                    name: ${name}-gitlab-runner-session-server
                    port:
                      number: 6443

What's the best way to test this MR?

Assuming cluster has NGINX ingress controller installed:

sessionServer:
  enabled: true
  internalPort: 8093
  externalPort: 443
  publicIP: runner1.example.com
  serviceType: ClusterIP
  ingress:
    enabled: true
    className: nginx
    annotations:
      nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"

Then the advertise address will be: runner1.example.com:443

What are the relevant issue numbers?

N/A

Edited by Ummet Civi

Merge request reports

Loading