Skip to content

Workhorse: support google as object storage provider

🔥 Situation

If we look at the object storage configuration on Workhorse, we can see that only aws and azure are supported.

It's sad that google is not supported since it's what is used on gitlab.com.

That support would allow to use the workhorse internal client to upload files when in direct upload mode.

By using the internal client, we can have some 🔔 and whistles for free. For example, the workhorse internal client will make use of resumable uploads when a large file is encountered.

Also, by using the internal client, it's easier to support additional encryption modes such as KMS or even customer supplied keys.

🚒 Solution

To support the workhorse internal google client, we need a few changes:

  1. Update workhorse to load a google client when the object storage configuration is describing that.
  2. Update rails so that in direct upload mode + google provider, we instruct workhorse to use its client.
  3. If I'm not wrong, we need to update https://gitlab.com/gitlab-org/omnibus-gitlab so that the rails object storage configuration with google creates the appropriate workhorse configuration.

It is advised to use a feature flag for this.

Edited by David Fernandez