On June 1, 2019, Microsoft announced the GA of their latest shared file service: Azure NetApp Files (ANF), a PaaS shared file service that supports both NFS and SMB protocols. Historically, NetApp technology has been widely used in on-premises deployments with Kubernetes and OpenShift, so many users have some knowledge of the inner-workings of NetApp products. With the official general availability launch of ANF, however, Azure users will be able to take advantage of this ultra-low latency and high-performance platform without needing familiarity with the foundations of NetApp products at all.
That means that users of Azure will be able to easily use ANF without having to know any NetApp at all.
Now, with the release of Trident (19.07)—a dynamic storage provisioner for Kubernetes/OpenShift/Docker—Azure users can quickly ensure that their containers and applications are able to easily take advantage of the benefits of ANF, automatically.
A great question with a simple answer: Using ANF as your underlying data platform allows you to take advantage of features like:
Getting started is simple. I’ll run you through a sample end-to-end deployment in this section. But first, let’s take a moment to understand the deployment options for Azure NetApp Files and Kubernetes in Azure.
This guide will focus on using AKS-Engine to deploy our Kubernetes clusters because (though it goes without saying, really) you want full control of your management nodes to use advanced features like dynamic provisioning of Azure NetApp Files storage.
Kubernetes Deployment in ANF looks like this:
And with that, let’s get started (grab a coffee first!).
In order to configure the Kubernetes features for advanced data management offered by Trident you will need to enable the flags described here. aks-engine is the deployment mechanism used by AKS to deploy clusters. Using it directly gives you more control over the management node, while still allowing you to perform easy upgrades, among other things. Detailed deployment instructions can be found here.
aks-engine deploy — subscription-id <yourAzureSubID> \
— dns-prefix <enterAnyName> \
— resource-group <yourResourceGroupName>\
— location <westeurope> \
— api-model examples/kubernetes.json \
— client-id <appId> \
— client-secret <password>\
— set servicePrincipalProfile.clientId=”<appId>” \
— set servicePrincipalProfile.secret=”<password>"
This configuration will deploy your cluster. If you used the example file provided above, you will have deployed the latest version of Kubernetes.
and
kubectl get pod -n trident
./tridentctl -n trident create backend -f backend-azure-anf-advanced.json
Check the status of your storage class (above) with:
kubectl get sc azure-netapp-files
kubectl create -f pvc-basic.yaml
You can monitor the status of your PVC with the following command. A volume typically takes 1–3 minutes to provision.
Optional: You can set Azure NetApp Files to be the default storage class with the following two commands:
kubectl patch storageclass default -p ‘{“metadata”: {“annotations”:{“storageclass.kubernetes.io/is-default-class”:”false”}}}’
That’s it! Your applications are now able to take advantage of the fastest shared file storage in Azure and get out-of-this-world Kubernetes performance!
Read the top three reasons why your cloud first mandate needs Azure or learn more about how you can use Azure NetApp Files without knowing any NetApp at all.