Geo: Support replication for Docker container registries
Problem to solve
Currently, Geo only supports replicating Docker registries from a primary to a secondary using some form of object storage. When using distributed object storage (e.g. S3) for a Docker Registry, the primary and secondary Geo nodes can use the same storage type. This approach does not rely on Geo's native replication ability.
Docker registries on local storage, however, are not yet supported. We are aiming to provide a native Geo, storage-agnostic way of setting up a Registry on a secondary Geo node.
Intended users
- Large enterprise customers
Further details
Proposal
Create a storage-agnostic way to setup Registry on a secondary Geo node. There are two steps here:
- Develop a tool that is responsible for transferring images, sort of docker
pull/push
but without needing to set up a docker engine into our omnibus packages. See https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/3809 - Develop an event/tracking system for images in GitLab app, see https://gitlab.com/gitlab-org/gitlab-ee/issues/4426
Permissions and Security
N/A
Documentation
https://docs.gitlab.com/ee/administration/geo/replication/docker_registry.html will need to be updated.
Testing
N/A
What does success look like, and how can we measure that?
Docker registries using object storage and local storage will be able to be synced.
What is the type of buyer?
- Ultimate