- Configure the Helm chart to use external stateful data
Install GitLab on Kubernetes by using the cloud native GitLab Helm chart.
For a production deployment, you should have strong working knowledge of Kubernetes. This method of deployment has different management, observability, and concepts than traditional deployments.
In a production deployment:
- The stateful components, like PostgreSQL or Gitaly (a Git repository storage dataplane), must run outside the cluster on PaaS or compute instances. This configuration is required to scale and reliably service the variety of workloads found in production GitLab environments.
- You should use Cloud PaaS for PostgreSQL, Redis, and object storage for all non-Git repository storage.
If Kubernetes is not required for your GitLab instance, see the reference architectures for simpler alternatives.
You can configure the GitLab Helm chart to point to external stateful storage for items like PostgreSQL, Redis, all non-Git repository storage, as well as Git repository storage (Gitaly).
The following Infrastructure as Code (IaC) options use this approach.
For production-grade implementation, the appropriate chart parameters should be used to point to prebuilt, externalized state stores that align with the chosen reference architecture.
The reference architecture for deploying GitLab instances to Kubernetes is called cloud native hybrid specifically because not all GitLab services can run in the cluster for production-grade implementations. Each cloud native hybrid reference architecture is detailed within the overall architecture page. For instance, here is the cloud native hybrid reference architecture alternative for the 3,000 user count.
GitLab develops Infrastructure as Code that is capable of configuring the combination of Helm charts and supplemental cloud infrastructure:
- GitLab Environment Toolkit IaC.
- AWS Quick Start on EKS IaC: This tooling is under development. For GA status, follow this issue.
- Implementation pattern: Provision GitLab cloud native hybrid on AWS EKS: This resource provides a Bill of Materials tested with the GitLab Performance Toolkit, and uses the AWS Cost Calculator for budgeting.