- Important considerations
- Requirements
- Environment setup
- Deploying GitLab
- Upgrading GitLab
- Migrate from or to the GitLab Helm chart
Installing GitLab using Helm
Install GitLab on Kubernetes with the cloud native GitLab Helm chart.
Important considerations
The following considerations should be well noted for implementing production GitLab environments.
Default Helm chart configuration not intended for production
Installing GitLab using only the Helm charts creates a proof of concept (POC) implementation where all GitLab services are placed into the cluster. GitLab Cloud Native Hybrid Reference Architectures specify that the stateful components such as PostgreSQL or Gitaly (Git repository storage dataplane) run outside the cluster on PaaS or compute instances. This is required in order to scale and reliably service the many varieties of workloads found in production GitLab environments. Additionally it is allowable, and generally preferable, to take advantage of Cloud PaaS for PostgreSQL, Redis, and object storage for all non-Git repository storages.
Configure Helm charts to external stateful data
The GitLab Helm charts can be configured to point to external stateful storage for items such as the PostgreSQL, Redis, all Non-Git repository storage as well as Git repository storage (Gitaly). The Infrastructure as Code (IaC) options below 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.
Use GitLab Cloud Native Hybrid Reference Architectures
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 Cloud Native Hybrid deployment with Infrastructure as Code (IaC) and builder resources
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 for GitLab Cloud Native Hybrid on EKS IaC - this tooling is under development, for GA status please follow this issue: AWS Quick Start for GitLab Cloud Native Hybrid on EKS Status
- Implementation Pattern: Provision GitLab Cloud Native Hybrid on AWS EKS - regardless of how you are building Cloud Native Hybrid, this resource provides a Bill of Materials tested with GitLab Performance Toolkit and budgets using AWS Cost Calculator.
Requirements
To deploy GitLab on Kubernetes, the following are required:
- kubectl
1.16
or higher, compatible with your cluster (+/- 1 minor release from your cluster). - Helm v3 (3.3.1 or higher).
-
A Kubernetes cluster, version 1.16 through 1.21. 8vCPU and 30GB of RAM is recommended.
- Please refer to our Cloud Native Hybrid reference architectures for the cluster topology recommendations for the specific environment sizes.
nginx-ingress.enabled=true
),
then Kubernetes 1.19 or newer is required.Environment setup
Before proceeding to deploying GitLab, you need to prepare your environment.
Tools
helm
and kubectl
must be installed on your computer.
Cloud cluster preparation
Follow the instructions to create and connect to the Kubernetes cluster of your choice:
- Amazon EKS
- Azure Kubernetes Service
- Google Kubernetes Engine
- OpenShift
- Oracle Container Engine for Kubernetes
- VMware Tanzu - Documentation to be added.
- On-Premises solutions - Documentation to be added.
Deploying GitLab
With the environment set up and configuration generated, you can now proceed to the deployment of GitLab.
Upgrading GitLab
If you are upgrading an existing Kubernetes installation, follow the upgrade documentation instead.
Migrate from or to the GitLab Helm chart
To migrate your existing GitLab Linux package installation to your Kubernetes cluster, or vice versa, follow the migration documentation.