Skip to content

Azure Blob Storage

FlexFS supports Azure Blob Storage as a block store backend using the Azure SDK for Go. Authentication is handled via shared key credentials (storage account access key) or Azure Default Credentials (managed identity, environment variables, etc.).

Create a storage account or use an existing one. FlexFS uses the Blob Storage service.

Terminal window
# Create a resource group (if needed)
az group create --name flexfs-rg --location eastus
# Create a storage account
az storage account create \
--name myflexfsblocks \
--resource-group flexfs-rg \
--location eastus \
--sku Standard_LRS \
--kind StorageV2
  • Performance tier: Standard is sufficient for most workloads. Premium can be used for latency-sensitive deployments.
  • Redundancy: LRS (Locally Redundant Storage) is the minimum. Choose based on your durability requirements.
  • Public access: Disable blob public access. FlexFS authenticates all requests.
  • Hierarchical namespace (Data Lake): Not required. FlexFS uses flat blob storage.

Create a container within the storage account to hold flexFS blocks:

Terminal window
az storage container create \
--name flexfs-blocks \
--account-name myflexfsblocks

The simplest authentication method uses the storage account name and access key:

Terminal window
# Retrieve the access key
az storage account keys list \
--account-name myflexfsblocks \
--resource-group flexfs-rg \
--query '[0].value' -o tsv

When configuring the flexFS block store credentials:

  • blockUser: The storage account name (e.g. myflexfsblocks)
  • blockPass: The storage account access key

FlexFS constructs the blob endpoint URL automatically from the storage account name:

https://<blockUser>.blob.core.windows.net/

Azure Default Credentials (managed identity)

Section titled “Azure Default Credentials (managed identity)”

When blockPass is empty but blockUser is provided, flexFS uses the Azure Default Credentials chain. This supports:

  • Managed Identity: On Azure VMs and Azure Kubernetes Service (AKS), a system-assigned or user-assigned managed identity can authenticate automatically.
  • Environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, and AZURE_CLIENT_SECRET for service principal authentication.
  • Azure CLI credentials: For local development via az login.

To use managed identity on an Azure VM:

Terminal window
# Assign a system-managed identity to the VM
az vm identity assign \
--name my-vm \
--resource-group flexfs-rg
# Grant Storage Blob Data Contributor role
az role assignment create \
--assignee <principal-id> \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/<sub-id>/resourceGroups/flexfs-rg/providers/Microsoft.Storage/storageAccounts/myflexfsblocks"

Managed identity is the recommended authentication method for production deployments on Azure.

Azure Shared Access Signatures (SAS) tokens can be used by generating a SAS URL and providing it via the endpoint configuration. However, the primary supported method is shared key or managed identity as described above.

When creating a block store via configure.flexfs (Enterprise) or the installer, provide:

FieldValue
Providerazure
RegionAzure region (e.g. eastus)
APIazure
BucketYour container name (e.g. flexfs-blocks)
PrefixOptional key prefix
EndpointLeave empty (constructed from blockUser)
blockUserStorage account name (always required)
blockPassStorage account access key (or leave empty for managed identity)