What is the webserver of Gitlab when deployed into Kubernetes

Hi there,
we have a Gitlab setup on Kubernetes and we are trying to figure out, which component forms the Webserver for Gitlab - We are using the reference architecture for 3000 User/60 RPS.

When deployed on a regular server it should be Puma, but it seems that its different when its deployed on Kubernetes.

I hope my request is clear so far, let me know if there is something else you need to know.

Hi there,

Yes, despite the different packaging approach on Kubernetes, Puma (plus GitLab Workhorse) is still what handles the web/Rails traffic for GitLab from my understanding.

  • In Omnibus installations, NGINX proxies requests to Workhorse, which in turn dispatches them to Puma (the Rails application server).

  • In the official GitLab Helm chart, things are split out into separate pods:

    • A webservice pod (the main Rails application) – which includes Puma and GitLab Workhorse in a single container image.
    • An Ingress Controller or Load Balancer (generic Kubernetes tooling) typically handles SSL termination and then forwards traffic to the webservice pod.

In other words, on Kubernetes it’s still Puma + Workhorse, just deployed differently (separate pods instead of the all-in-one Omnibus approach). The reference architectures do not swap in another webserver; they just bundle these same components under the “GitLab webservice” umbrella.

Cheers

1 Like