Create a docker image and chart per GitLab service
As part of our effort to support a cloud native deployment, 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 (#2575 (closed))
- Gitaly
- Workhorse
- Pages
We should consider using official images for:
- Nginx
- Registry (#2441 (closed))
- Mattermost
- Runner
- Prometheus
For installation, we would utilize a single gitlab
Helm chart. Underneath the covers, it would utilize the sub charts and docker containers we have built through this issue.
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.