Create a chart with images per service
Going forward with the charts, we should consider moving away from the Docker all in one
image that we officially support.
Having one service per container would allow us to have more flexibility at GitLab.com scale, and better align with cloud native best practices. This would also allow us to cover a section of the market where our omnibus-gitlab package or Docker all in one
were not possible to use, due to requiring root permissions.
We should consider creating separate docker images for:
- Unicorn Web
- Unicorn API
- Sidekiq
- Gitaly
- Workhorse
- GitLab Shell
- Container registry
- Pages
We should consider using official images for:
- Nginx
- Registry
- Mattermost
- Runner
- Prometheus
The docker images we would create would need to have a common way of configuration, probably using ENV variables. The details of this are to be decided.
This would allow us to not only create charts that are simpler to scale, but also allow more flexibility with external services.
These images could still be built in one place together with the rest of our build process.
Separating services would also allow us to remove the root
requirement that we currently have in our official image.
To make things clear, we would not be separating the existing Docker image but we would be introducing the 3rd option. This 3rd option would be available through Helm Charts at first, down the line we could add other options.