GitLab is the engine that powers many software businesses. In a world where success requires developers to move quickly, it is important to ensure that end users can accomplish their work as quickly as possible, with minimal interruptions, and they have access to the latest and greatest that GitLab has to offer. The Distribution group's mission is to set companies up for success by making it easy to deploy, maintain, and update a self-managed GitLab instance and ensure it is highly available for their users.
Today we have a mature and easy to use Omnibus based build system, which is the most common method for deploying a self-managed instance of GitLab. It includes everything a customer needs to run GitLab all in a single package, and is great for installing on virtual machines or real hardware. We are committed to making our package easier to work with, providing a first-class solution for database fault tolerance, and further automating the deployment and ongoing maintenance of a GitLab installation.
We also want GitLab to be the best cloud native development tool, and offering a great cloud native deployment is a key part of that. We are focused on offering a flexible and scalable container based deployment on Kubernetes, by using enterprise grade Helm charts.
The Helm charts are currently considered to be at the Viable maturity level. These epics will be used to define what it will take to get to the next maturity levels and track the work to be done:
PostgreSQL 11 and 12 included improvements to database sharding and partitioning. The Distribution team is moving to a more regular PostgreSQL updating schedule so that users can benefit from all of the latest performance enhancements. In each major GitLab release, we will bump the minimum required version of PostgreSQL. PostgreSQL 11 is currently the minimum required version. We are in the process of adding full support for PostgreSQL 12. The next step will be to default to PostgreSQL 12 for new installs and upgrades. This is currently targeted for GitLab 13.6.
The interest in moving applications to Kubernetes is growing. This includes moving self-hosted GitLab instances to Kubernetes. The recommended approach to deploying GitLab in Kubernetes is to use the GitLab Helm chart. The helm chart is not as mature as the Omnibus install method, but we continue to make great strides forward. The Viable to Complete maturity epic is a top priority for the first half of 2020. It tracks the work to add the few GitLab features that are still missing, prove out the helm chart at large scale, and improve the documentation and configuration options.
Deploying large-scale, self-managed instances of GitLab with a fully-distributed, fault tolerant architecture and Geo replication continues to be a time-consuming and complex undertaking. We are committed to drastically reducing the time it takes for new users of GitLab to set up high availability and Geo. The HA/Geo epic tracks the work to create automation tooling to eliminate many of the manual steps that are currently required.