---
title: Configure OpenShift and Kubernetes Performance and on Azure
description: Read on to find out how NetApp optimizes your Kubernetes performance on Azure, and how to configure your K8s and Openshift for top cloud performance.
image: https://cloud.netapp.com/hubfs/Out-of-This-World%20Kubernetes%20Performance%20on%20Azure%20with%20Azure%20Netapp%20Files-Blog.jpg
---

![NetApp-Blue-logo-sm1](https://bluexp.netapp.com/hubfs/NetApp-Blue-logo-sm1.svg "NetApp-Blue-logo-sm1")

![hamburger icon](https://bluexp.netapp.com/hubfs/NetApp-Blue/hamburger-icon.svg) ![close icon](https://bluexp.netapp.com/hubfs/NetApp-Blue/close-icon.svg)

- Product
  
  ![left nav icons-1](https://bluexp.netapp.com/hubfs/left%20nav%20icons-1.svg)Storage 
    - [NetApp On-premises](https://bluexp.netapp.com/netapp-on-premises)
    - [Cloud Volumes ONTAP](https://bluexp.netapp.com/ontap-cloud)
    - [Amazon FSx for NetApp ONTAP](https://bluexp.netapp.com/fsx-for-ontap)
    - [Azure NetApp Files](https://bluexp.netapp.com/azure-netapp-files)
    - [Google Cloud NetApp Volumes](https://bluexp.netapp.com/google-cloud-netapp-volumes)
  
  
  ![data mobility](https://bluexp.netapp.com/hubfs/NetApp-Blue/data-mobility.svg)Mobility 
    - [Copy and Sync](https://bluexp.netapp.com/cloud-sync-service)
    - [Tiering](https://bluexp.netapp.com/cloud-tiering)
  
  
  ![left nav icons-2](https://bluexp.netapp.com/hubfs/left%20nav%20icons-2.svg)Protection 
    - [Backup and recovery](https://bluexp.netapp.com/cloud-backup)
    - [Disaster recovery](https://bluexp.netapp.com/disaster-recovery)
    - [Replication](https://bluexp.netapp.com/replication)
    - [Ransomware protection](https://bluexp.netapp.com/ransomware-protection)
  
  
  ![left nav icons](https://bluexp.netapp.com/hubfs/left%20nav%20icons.svg)Analysis and control 
    - [Observability](https://bluexp.netapp.com/cloud-insights)
    - [Classification](https://bluexp.netapp.com/netapp-cloud-data-sense)
    - [AIOps & storage health ](https://bluexp.netapp.com/digital-advisor)
    - [Digital wallet](https://bluexp.netapp.com/digital-wallet)
- Resources
  
    - ![solutions database](https://bluexp.netapp.com/hubfs/NetApp-Blue/solutions-protection.svg)CALCULATORS
    - [TCO Azure](https://bluexp.netapp.com/azure-calculator)
    - [TCO AWS](https://bluexp.netapp.com/aws-calculator)
    - [TCO Google Cloud](https://bluexp.netapp.com/google-cloud-calculator)
    - [Cloud Volumes ONTAP Sizer](https://bluexp.netapp.com/cvo-sizer)
    - ![resources explore](https://bluexp.netapp.com/hubfs/NetApp-Blue/resources-explore.svg)EXPLORE
    - [Global Availability Map](https://bluexp.netapp.com/cloud-volumes-global-regions)
- [Help Center](https://bluexp.netapp.com/help-center)

[Get Started](https://cloudmanager.netapp.com/)

 Azure File Storage

# Out-of-This-World Kubernetes Performance on Azure with Azure NetApp Files

### Share

[![Facebook](https://bluexp.netapp.com/hubfs/Facebook.svg)](https://www.facebook.com/sharer.php?u=https://bluexp.netapp.com/blog/ma-anf-blg-configure-kubernetes-openshift) [![Twitter](https://bluexp.netapp.com/hubfs/Twitter.svg)](https://twitter.com/share?url=https://bluexp.netapp.com/blog/ma-anf-blg-configure-kubernetes-openshift) [![LinkedIn](https://bluexp.netapp.com/hubfs/linkedin-1.svg)](https://www.linkedin.com/shareArticle?mini=true&url=https://bluexp.netapp.com/blog/ma-anf-blg-configure-kubernetes-openshift)

### More about Azure File Storage

- [ Azure Stack Hub: How It Works, Pricing, and Capacity Planning ](https://bluexp.netapp.com/blog/azure-cvo-blg-azure-stack-hub-how-it-works-pricing-and-capacity-planning)
- [ Azure Storage Limits at a Glance ](https://bluexp.netapp.com/blog/azure-anf-blg-azure-storage-limits-at-a-glance)
- [ The Complete Guide to Cloud Transformation ](https://bluexp.netapp.com/blog/azure-anf-blg-the-complete-guide-to-cloud-transformation)
- [ Azure Backup Service: 8 Ways to Backup with Azure ](https://bluexp.netapp.com/blog/azure-anf-blg-azure-backup-service-8-ways-to-backup-with-azure)
- [ Azure Data Catalog: Understanding Concepts and Use Cases ](https://bluexp.netapp.com/blog/azure-anf-blg-azure-data-catalog-understanding-concepts-and-use-cases)
- [ Azure Table Storage: Cloud NoSQL for Dummies ](https://bluexp.netapp.com/blog/azure-anf-blg-azure-table-storage-cloud-nosql-for-dummies)
- [ Azure NetApp Files: Performance So Good You’ll Think You’re On Premises ](https://bluexp.netapp.com/blog/ma-anf-blg-performance-so-good-youll-think-youre-on-premises)
- [ Azure Keeps Banking Customer Data Secure ](https://bluexp.netapp.com/blog/ma-anf-blg-cloud-migration-banking-finance-industry)
- [ Why Should You Migrate Databases to Azure? ](https://bluexp.netapp.com/blog/ma-anf-blg-why-migrate-oracle-databases-cloud)
- [ Out-of-This-World Kubernetes Performance on Azure with Azure NetApp Files ](https://bluexp.netapp.com/blog/ma-anf-blg-configure-kubernetes-openshift)
- [ Myth Busting: Cloud vs. On Premises - Which is Faster? ](https://bluexp.netapp.com/blog/ma-anf-blg-myth-cloud-storage-faster-than-on-premises)
- [ Meet Cloud Sync, the Muscle Behind Cloud Migration ](https://bluexp.netapp.com/blog/ma-anf-blg-cloud-sync-rapid-migration)
- [ Azure NetApp Files Enables Elite Enterprise Apps ](https://bluexp.netapp.com/blog/ma-anf-blg-elite-enterprise-apps-2)
- [ Azure NetApp Files Enables an Elite Class of Enterprise Azure Applications: Part One ](https://bluexp.netapp.com/blog/ma-anf-blg-elite-enterprise-apps-1)
- [ Building and Running SaaS Applications with NetApp ](https://bluexp.netapp.com/blog/building-saas-applications-with-netapp)

### Subscribe to our blog

Thanks for subscribing to the blog.

### October 8, 2019

### Topics: [Azure NetApp Files](https://bluexp.netapp.com/blog/topic/azure-netapp-files) [5 minute read](https://bluexp.netapp.com/blog/topic/5-minute-read)

On June 1, 2019, Microsoft announced the GA of their latest shared file service: [Azure NetApp Files](https://blog.netapp.com/azure-netapp-files-general-availability/) (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](https://bluexp.netapp.com/azure-netapp-files) without having to know any NetApp at all.

## Out-of-This-World Kubernetes Performance on Azure with ANF

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.

## Why Use ANF?

A great question with a simple answer: Using ANF as your underlying data platform allows you to take advantage of features like:

- Consistent sub-millisecond latency: Your apps will be extremely responsive.
- Scalability: Grow cloud volumes in ANF up to 100TB in seconds.
- Simplicity: With three performance levels that lay bare performance possibilities, you’ll be able to focus on the important things, as opposed to worrying about your application responsiveness because of the underlying data platform.

## How Do I Get Started With ANF?

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.

### Supported deployments for Kubernetes in Azure

![Azure NetApp Files with AKS](https://cloud.netapp.com/hubfs/Azure%20NetApp%20Files%20with%20AKS.jpg)

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:

1. **Deploy** Kubernetes cluster in Azure using AKS-Engine.
2. **Install** Trident into the master node.
3. **Configure** Azure NetApp Files.
4. **Done!**

And with that, let’s get started (grab a coffee first!).

## **Deploy Kubernetes cluster in Azure using AKS-Engine**

In order to configure the Kubernetes features for advanced data management offered by Trident you will need to enable the flags [described here](https://netapp-trident.readthedocs.io/en/stable-v19.07/support/requirements.html). 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](https://github.com/Azure/aks-engine/blob/master/docs/tutorials/quickstart.md).

1. Create a resource group  
   az group create — name k8s — location <yourLocation>  
   For example, I use “westeurope” as my location. You can run an Availability Zone list (account-locations) to view all the location codes. Be sure that you’re deploying your cluster in a location/region offered by Azure NetApp Files!

1. Find your subscription:  
   az account list -o table
   
   Take note of your subscription ID because you’ll need it later.

1. Create the service principal for the Kubernetes cluster  
   a. We will use a service principal in order to provide security and permissions to Trident for our Azure NetApp Files resources:
   
   az ad sp create-for-rbac — role=”Contributor” -scopes=”/subscriptions/<yourSubId>/resourceGroups/Kubernetes”
   
   b. Once you’ve created your service principal, assign it a role by navigating to “Subscriptions” -> select your subscription -> “IAM” -> “Add Role Assignment”

![Access control (IAM)](https://cloud.netapp.com/hubfs/Access%20control%20(IAM).jpg)

1. Deploy Kubernetes cluster using aks-engine  
   Make a note of the **appId** and **password** because you’ll use these in the next command.
   
   Next, we’ll use aks-engine to deploy our cluster.

An example configuration file called **[kubernetes.json](https://github.com/kirkryan/aks-engine/blob/master/examples/kubernetes.json) **is available at my [GitHub repo](https://github.com/kirkryan/aks-engine).  
In this example, I’ll deploy a small cluster using Standard_B2s VM sizes. Be sure to change api-model below to match the correct path of your config file.

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.

1. Download and install Trident  
   a. Now that your cluster is up and running, log into the management node via SSH and run the following commands:
   
   wget https://github.com/NetApp/trident/releases/download/v19.07.0/trident-installer-19.07.0.tar.gz  
   tar -xf trident-installer-19.07.0.tar.gz  
   cd trident-installer
   
   b. Now install Trident with the following command:
   
   ./tridentctl install -n trident
   
   Once finished you can check the status of your installation with the following commands:
   
   ./tridentctl -n trident version

![.tridentctl -n trident version](https://cloud.netapp.com/hubfs/.tridentctl%20-n%20trident%20version.jpg)

and

kubectl get pod -n trident

![kubectl get pod -n trident](https://cloud.netapp.com/hubfs/kubectl%20get%20pod%20-n%20trident.jpg)

1. Configure the backend.
   
   Now that Trident is installed, the next step is configuring the backend. Trident supports a wide variety of backends and, in this instance, I have provided a [quick start template here](https://github.com/kirkryan/quickstartTridentANF/blob/master/backend-azure-anf-advanced.json). More advanced configurations can be found [here](https://netapp-trident.readthedocs.io/en/stable-v19.07/kubernetes/operations/tasks/backends/anf.html#example-configurations).
2. Once the backend configuration is created, run:
   
   ./tridentctl -n trident create backend -f backend-azure-anf-advanced.json

![tridentctl -n trident create backend -f backend-azure-anf-advanced](https://cloud.netapp.com/hubfs/tridentctl%20-n%20trident%20create%20backend%20-f%20backend-azure-anf-advanced.jpg)

1. Next, let’s add a storage class, a quickstart template that will create a class called azure-netapp-files is [here](https://github.com/kirkryan/quickstartTridentANF/blob/master/storage-class-csi.yaml).
   
   kubectl create -f storage-class-csi.yaml
   
   ![storage class](https://cloud.netapp.com/hubfs/storage%20class.jpg)

          
      Check the status of your storage class (above) with:  
     
   kubectl get sc azure-netapp-files

1. Next, create a persistent volume claim (PVC)
   
   kubectl create -f pvc-basic.yaml
   
   ![persistent volume claim](https://cloud.netapp.com/hubfs/persistent%20volume%20claim.jpg)
   
   You can monitor the status of your PVC with the following command. A volume typically takes 1–3 minutes to provision.

![PVC Volume](https://cloud.netapp.com/hubfs/PVC%20Volume.jpg)

## Congratulations! Your Kubernetes Cluster is Now Using Azure NetApp Files!

**Optional:** You can set Azure NetApp Files to be the default storage class with the following two commands:

1. Set the storage class called azure-netapp-files (if you used the quickstart — or your storage class name if you specified differently)  
   kubectl patch storageclass azure-netapp-files -p ‘{“metadata”: {“annotations”:{“storageclass.kubernetes.io/is-default-class”:”true”}}}’

1. Remove the old default (Azure Managed Disks)
   
   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!

## Become the Cloud Genius at Your Organization.

Read the [top three reasons](https://bluexp.netapp.com/ma-anf-lp-three-reasons-linux-cloud-mandate-ebook) why your cloud first mandate needs Azure or learn more about how you can use [Azure NetApp Files](https://bluexp.netapp.com/ma-anf-lp-aware-register) without knowing any NetApp at all.

[Kirk Ryan](https://bluexp.netapp.com/blog/author/kirk-ryan-principal-technologist)

### Principal Technologist

<https://bluexp.netapp.com/blog/author/kirk-ryan-principal-technologist>

-

```json
{
  "@context" : "https://schema.org",
  "@type" : "TechArticle",
  "author" : {
    "@type" : "Person",
    "name" : "Kirk Ryan, Principal Technologist"
  },
  "dateModified" : "Oct 8, 2019 6:03:10 AM",
  "datePublished" : "Oct 8, 2019 6:03:10 AM",
  "description" : "Read on to find out how NetApp optimizes your Kubernetes performance on Azure, and how to configure your K8s and Openshift for top cloud performance.",
  "headline" : " Out-of-This-World Kubernetes Performance on Azure with Azure NetApp Files ",
  "image" : [ "https://cloud.netapp.com/hubfs/Out-of-This-World%20Kubernetes%20Performance%20on%20Azure%20with%20Azure%20Netapp%20Files-Blog.jpg" ],
  "mainEntityOfPage" : {
    "@id" : "https://bluexp.netapp.com/blog",
    "@type" : "WebPage"
  },
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://bluexp.netapp.com/hubfs/2016_dev/netapp-logo.png"
    },
    "name" : "Netapp"
  }
}
```