Skip to content

Add Azure Blob Storage support

Stan Hu requested to merge sh-add-azure-blob-support into master

Currently customers wanting to use Azure Blob Storage have to set up a Minio Gateway (https://docs.gitlab.com/charts/advanced/external-object-storage/azure-minio-gateway.html), which isn't ideal because it requires customers to maintain their own proxy server for Azure. We have a number of customers who want native support for Azure Blob Storage.

This merge requests uses our custom Azure gem (https://gitlab.com/gitlab-org/gitlab-fog-azure-rm) to integrate direct upload access with GitLab.

Because the Azure Put Blob API (https://docs.microsoft.com/en-us/rest/api/storageservices/put-blob) does not work with chunked encoding, uploads cannot be streamed directly via a pre-signed URL without saving to disk first. To make this work without that, we need to add an Azure client directly in Workhorse that uses the Put Block and Put Block List API (https://docs.microsoft.com/en-us/rest/api/storageservices/put-block-list).

The Workhorse client is implemented in gitlab-workhorse!555 (merged). We use the Go Cloud Development Kit to generate a URL (e.g. azblob://container) that can be extended for other object storage providers.

Part of #25877 (closed)

Edited by Stan Hu

Merge request reports