- Docker Container Images
- The GitLab Chart
- Design Decisions
We plan to support three tiers of components:
- Docker Containers
- Scheduler (Kubernetes)
- Higher level configuration tool (Helm)
The main method customers would use to install would be the Helm Chart in this repository. At some point in the future, we may also offer other deployment methods like Amazon CloudFormation or Docker Swarm.
As a foundation, we will be creating a Docker container for each service. This will allow easier horizontal scaling with reduced image size and complexity. Configuration should be passed in a standard way for Docker, perhaps environment variables or a mounted file. This provides a clean common interface with the scheduler software.
The GitLab application is built using Docker images that contain GitLab specific services. The build environments for these images can be found in the CNG repository.
The following GitLab components have images in the CNG repository.
- GitLab Elasticsearch Indexer
- GitLab Exporter
- GitLab Shell
- GitLab Toolbox
The following are forked charts which also use GitLab specific Docker images.
Docker images that are used for
initContainers and various
We leverage the following existing official containers for underlying services:
- Docker Distribution (Docker Registry 2.0)
- NGINX Ingress
This is the top level
gitlab chart, which configures all necessary resources
for a complete configuration of GitLab. This includes GitLab, PostgreSQL, Redis,
Ingress, and certificate management charts.
At this high level, a customer can make decisions like:
- Whether they want to use the embedded PostgreSQL chart, or to use an external database like Amazon RDS for PostgreSQL.
- To bring their own SSL certificates, or leverage Let’s Encrypt.
- To use a load balancer, or a dedicated Ingress.
Customers who would like to get started quickly and easily should begin with this chart.
The main GitLab chart is an umbrella chart, made up of many other charts. Each sub-chart is documented individually, and laid in a structure that matches the charts directory structure.
Non-GitLab components are packaged and documented on the top level. GitLab component services are documented under the GitLab chart:
- GitLab/GitLab Exporter
- GitLab/GitLab Grafana
- GitLab/GitLab Shell
A list of which components are deployed when using the chart, and configuration instructions if needed, is available on the architecture components list page.
Documentation of the decisions made regarding the architecture of these charts can be found in Design Decisions documentation