Configure an Azure NetApp Files backend
Use Azure NetApp Files as a backend for Trident.
This backend supports NFS and SMB volumes.
Trident supports managed identities and workload identity for Azure Kubernetes Service (AKS) clusters.
Supported Azure cloud environments
Trident supports Azure NetApp Files backends in multiple Azure cloud environments.
Supported Azure clouds include:
-
Azure Commercial
-
Azure Government (Azure Government / MAG)
When you deploy Trident or configure an Azure NetApp Files backend, ensure that Azure Resource Manager and authentication endpoints match your Azure cloud environment.
Review Azure NetApp Files driver support
Trident provides the following Azure NetApp Files storage driver.
Supported access modes include ReadWriteOnce (RWO), ReadOnlyMany (ROX), ReadWriteMany (RWX), and ReadWriteOncePod (RWOP).
| Driver | Protocol | volumeMode | Access modes supported | File systems supported |
|---|---|---|---|---|
|
NFS |
Filesystem |
RWO, ROX, RWX, RWOP |
|
Review considerations
-
Azure NetApp Files does not support volumes smaller than 50 GiB.
Trident creates a 50-GiB volume when a smaller volume is requested. -
Trident supports SMB volumes mounted to pods running on Windows nodes only.
-
Azure NetApp Files deployments in non-Commercial Azure clouds require cloud-specific Azure Resource Manager and authentication endpoints.
Ensure that Trident and any backend configuration use the endpoints appropriate for your Azure cloud environment.
Use managed identities for AKS
Trident supports managed identities for AKS clusters.
If you use tridentctl to create or manage Azure NetApp Files backends, ensure that it is configured for the correct Azure cloud environment.
To use managed identities, you must have:
-
A Kubernetes cluster deployed using AKS
-
Managed identities configured on the AKS Kubernetes cluster
-
Trident installed with
cloudProviderset to"Azure"
Edit tridentorchestrator_cr.yaml and set cloudProvider to "Azure".
apiVersion: trident.netapp.io/v1
kind: TridentOrchestrator
metadata:
name: trident
spec:
debug: true
namespace: trident
imagePullPolicy: IfNotPresent
cloudProvider: "Azure"
The following example installs Trident and sets cloudProvider using the environment variable $CP:
helm install trident trident-operator-100.2506.0.tgz --create-namespace --namespace <trident-namespace> --set cloudProvider=$CP
tridentctlThe following example installs Trident and sets the cloud-provider flag to Azure:
tridentctl install --cloud-provider="Azure" -n trident
Use workload identity for AKS
Workload identity enables Kubernetes pods to access Azure resources by authenticating as a workload identity.
If you use tridentctl to create or manage Azure NetApp Files backends, ensure that it is configured for the correct Azure cloud environment.
To use workload identity, you must have:
-
A Kubernetes cluster deployed using AKS
-
Workload identity and oidc-issuer configured on the AKS Kubernetes cluster
-
Trident installed with
cloudProviderset to"Azure"andcloudIdentityset to the workload identity value
Edit tridentorchestrator_cr.yaml and set cloudProvider to "Azure".
Set cloudIdentity to azure.workload.identity/client-id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx.
apiVersion: trident.netapp.io/v1
kind: TridentOrchestrator
metadata:
name: trident
spec:
debug: true
namespace: trident
imagePullPolicy: IfNotPresent
cloudProvider: "Azure"
cloudIdentity: 'azure.workload.identity/client-id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx' # Edit
Set the values for the cloud-provider (CP) and cloud-identity (CI) flags using the following environment variables:
export CP="Azure"
export CI="'azure.workload.identity/client-id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx'"
The following example installs Trident and sets cloudProvider using $CP and sets cloudIdentity using $CI:
helm install trident trident-operator-100.6.0.tgz --set cloudProvider=$CP --set cloudIdentity="$CI"
tridentctlSet the values for the cloud provider and cloud identity flags using the following environment variables:
export CP="Azure"
export CI="azure.workload.identity/client-id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
The following example installs Trident and sets cloud-provider to $CP and cloud-identity to $CI:
tridentctl install --cloud-provider=$CP --cloud-identity="$CI" -n trident