Ability to assign gitaly storage to specific groups
Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.
Problem to Solve
Currently GitLab supports the configuration of multiple gitaly storage nodes with the ability to configure where new repositories are stored. However, the only options available for this are weighted storage options that then balances new projects across the various weight configurations to place a repository on those nodes.
Additional Details
While the weighted nature of repository storage makes sense when trying to spread load across many storage volumes, it doesn't provide users with any control to isolate projects or groups based on specific criteria. Some organizations may, for example, want to isolate entire departments or organizations to different gitaly storage options for security, compliance or workload reasons.
Proposal
A new option configuration should be introduced that allows organizations to specify which storage node is used for a particular GitLab Group.
UI Based Configuration
In the /admin/application_settings/repository#js-repository-storage-settings
interface we would introduce a new option that allows you to see the storage nodes and then has a dropdown which allows you to single (or multi?) select a group to be assigned to it.
Additional implementation items to consider
- The option for weighting would not be available if a node was allocated to a specific group. However, if a group had multiple nodes, potentially we could also support weight?
- Implementation only via
gitlab.rb
could lead to failed configuration since it may not actually know if a group exists - If a project moves between groups, it may also now be required to migrate Gitaly storage if that group uses special storage
Decisions
gitlab.rb
based configuration was eliminated since it creates a connection between group names and configuration files which could break if a group name was changed/modified.