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?