-
Docker Container Images- GitLab Docker Images
- Official Docker Images
-
The GitLab chart- Structure of these charts
- Components list
- Design Decisions
Architecture
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.
Docker Container Images
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.
GitLab Docker Images
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.
- Gitaly
- GitLab Elasticsearch Indexer
- mail_room
- GitLab Exporter
- GitLab Shell
- Sidekiq
- GitLab Toolbox
- Webservice
- Workhorse
The following are forked charts which also use GitLab specific Docker images.
Docker images that are used for
initContainers
and various
Job
s.
- alpine-certificates
- kubectl
Official Docker Images
We leverage the following existing official containers for
underlying services:
- Docker Distribution (Docker Registry 2.0)
- Prometheus
- NGINX Ingress
- cert-manager
- Redis
- PostgreSQL
- Grafana
The GitLab chart
This is the top level GitLab chart (
gitlab
), 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.
Structure of these charts
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:
- NGINX
- MinIO
- Registry
-
GitLab/Gitaly
-
GitLab/GitLab Exporter
-
GitLab/GitLab Grafana
-
GitLab/GitLab Shell
-
GitLab/Migrations
-
GitLab/Sidekiq
-
GitLab/Webservice
Components list
A list of which components are deployed when using the chart, and configuration instructions if needed,
is available on the architecture components list page.
Design Decisions
Documentation of the decisions made regarding the architecture of these charts can
be found in Design Decisions documentation