Prometheus - TCP 9187 -> PostgreSQLExporter GitLabWorkhorse - TCP 443 -> ObjectStorage This is a simplified architecture diagram that can be used toĪ complete architecture diagram is available in our Refer to the process for adding new service components for more details. The official GitLab Helm chart or reach out to The simplest way to ensure this, is to add support for your feature or service to New features and services must be written to consider Kubernetes compatibility first. Since components written with the API-first philosophy in mind are compatible with both methods, all Services that need to have access to the sameįiles, need to be able to exchange information through the appropriate APIs. In other words, the shared state between services needs to be carefully considered whenĪrchitecting new features and adding new components. In complete isolation, or only accessible through specific ports. This is not the case for services running in Kubernetes, where services might be running Official Linux packages by default have services that have access to the shared configuration and.
Shared files are not an option for the application running on the Kubernetes
It also keeps default branch and hook information with the bare repository. GitLab stores the bare Git repositories in the locationĭefined in the configuration file, repositories: section. The GitLab application uses PostgreSQL for persistent database information (for example, users, Puma application server to serve static pages, uploads (for example, avatar images or attachments), Workhorse accesses the gitlab/public directory, bypassing the It uses Sidekiq as a job queue which, in turn, uses Redis as a non-persistentĭatabase backend for job information, metadata, and incoming jobs.īy default, communication between Puma and Workhorse is via a Unix domain socket, but forwarding GitLab serves web pages and the GitLab API using the PumaĪpplication server. Official GitLab Helm chart and the official Linux package.Ī typical installation uses NGINX or Apache as a web server to proxy throughĪpplication server. The largest known GitLab instance is on, which is deployed using our
Generally released around the same time as GitLab releases, with the exception of informal securityĪ typical install of GitLab is on GNU/Linux, but growing number of deployments also use the GitLab codebase gives you the latest stable version of those components.
New versions of each dependent component are usually tags, but staying on the main branch of the These components are described in theĬomponent details section, and all have their own repositories. New versions of GitLab are released from stable branches, and the main branch is used forįor more information, visit the GitLab Release Process.īoth distributions require additional components. GitLab is available under different subscriptions.
There are two software distributions of GitLab: GitLab architecture overview Software delivery.Adapting existing and introducing new components.