Enable Cloud Controller Manager (preview) on your Azure Kubernetes Service (AKS) cluster

As a cloud provider, Azure works closely with the Kubernetes community to support our infrastructure on behalf of users.

Previously, cloud provider integration with Kubernetes was in-tree, where any changes to cloud specific features would follow the standard Kubernetes release cycle. When issues were fixed or enhancements were rolled out, they would need to be within the Kubernetes community's release cycle.

The Kubernetes community is now adopting an out-of-tree model, where cloud providers control releases independently of the core Kubernetes release schedule through the cloud-provider-azure component. As part of this cloud-provider-azure component, we're also introducing a cloud-node-manager component, which is a component of the Kubernetes node lifecycle controller. A DaemonSet in the kube-system namespace deploys this component.

The Cloud Storage Interface (CSI) drivers are included by default in Kubernetes version 1.21 and higher.

Note

When you enable the Cloud Controller Manager (preview) on your AKS cluster, it also enables the out-of-tree CSI drivers.

Prerequisites

You must have the following resources installed:

Install the aks-preview Azure CLI extension

Important

AKS preview features are available on a self-service, opt-in basis. Previews are provided "as is" and "as available," and they're excluded from the service-level agreements and limited warranty. AKS previews are partially covered by customer support on a best-effort basis. As such, these features aren't meant for production use. For more information, see the following support articles:

  1. Install the aks-preview extension using the az extension add command.

    az extension add --name aks-preview
    
  2. Update to the latest version of the extension released using the az extension update command.

    az extension update --name aks-preview
    

Register the 'EnableCloudControllerManager' feature flag

  1. Register the EnableCloudControllerManager feature flag using the az feature register command.

    az feature register --namespace "Microsoft.ContainerService" --name "EnableCloudControllerManager"
    

    It takes a few minutes for the status to show Registered.

  2. Verify the registration status using the az feature show command.

    az feature show --namespace "Microsoft.ContainerService" --name "EnableCloudControllerManager"
    
  3. When the status reflects Registered, refresh the registration of the Microsoft.ContainerService resource provider using the az provider register command.

    az provider register --namespace Microsoft.ContainerService
    

Create a new AKS cluster with Cloud Controller Manager

  • Create a new AKS cluster with Cloud Controller Manager using the az aks create command and include the parameter EnableCloudControllerManager=True as an --aks-custom-header.

    az aks create -n aks -g myResourceGroup --aks-custom-headers EnableCloudControllerManager=True
    

Upgrade an AKS cluster to Cloud Controller Manager on an existing cluster

  • Upgrade an existing AKS cluster with Cloud Controller Manager using the az aks upgrade command and include the parameter EnableCloudControllerManager=True as an --aks-custom-header.

    az aks upgrade -n aks -g myResourceGroup -k <version> --aks-custom-headers EnableCloudControllerManager=True
    

Verify component deployment

  • Verify the component deployment using the following kubectl get po command.

    kubectl get po -n kube-system | grep cloud-node-manager
    

Next steps

  • For more information on CSI drivers, and the default behavior for Kubernetes versions higher than 1.21, review the CSI documentation.
  • For more information on the Kubernetes community direction regarding out-of-tree providers, see the community blog post.