Automate configuration and deployment of GitLab HA
There are a number of configuration and deployment steps necessary to deploy a true highly available GitLab cluster. Requirements include HA Postgres, HA Redis, a redundant shared storage system like NFS, multiple GitLab installations, network changes like a load balancer, and more.
In a typical installation this could require up to 10 individual VMs/containers and more for scale, with individual configuration on each. To solve this challenge, we should look to automate this process as much as we can for customers.
I would suggest we have a bifurcated approach, based on desired deployment type:
- For VM and physical machine deployments, we can use something like Terraform to provide the automation.
- For container based deployments, we should instead build on our Helm Charts and K8s to provide the orchestration.
To specifically focus on the VM deployment method, some questions:
- Terraform is the broadest tool for this job, with providers ranging the gamut from on-prem VMWare to bare metal automation.
- What percent of code however can be re-used across providers?
- What percent of customers would leverage this for on-prem deployments?
- Are there realistic alternative tools for VM deployments?