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