This repository provides the Azure implementation of the Kubernetes cloud provider interface.
This is the "external" or "out-of-tree" cloud provider for Azure. The "in-tree" cloud provider has been deprecated since v1.20 and only bug fixes are allowed in its Kubernetes repository directory.
cloud-provider-azure
has been GA since v1.0.0. Releases are available from the Microsoft Container Registry (MCR).
The latest release of azure-cloud-controller-manager and azure-cloud-node-manager can be found at
mcr.microsoft.com/oss/kubernetes/azure-cloud-controller-manager:v1.25.0
mcr.microsoft.com/oss/kubernetes/azure-cloud-node-manager:v1.25.0
(Minor release versions match Kubernetes minor release versions since v1.23.0.)
Kubernetes version | cloud-provider version | cloud-provider branch |
---|---|---|
master | N/A | master |
v1.25.x | v1.25.z | release-1.25 |
v1.24.x | v1.24.z | release-1.24 |
v1.23.x | v1.23.z | release-1.23 |
v1.22.x | v1.1.z | release-1.1 |
Below table shows the cloud-controller-manager and cloud-node-manager versions supported in Azure Kubernetes Service(AKS).
AKS version | cloud-controller-manager version | cloud-node-manager version |
---|---|---|
v1.24.x (preview) | v1.24.4 | v1.23.11 |
v1.23.x | v1.23.17 | v1.23.11 |
v1.22.x | v1.1.20 | v1.1.14 |
v1.21.x | v1.0.23 | v1.0.18 |
To build the binary for azure-cloud-controller-manager:
make all
To build the Docker image for azure-cloud-controller-manager:
IMAGE_REGISTRY=<registry> make image
For detailed directions on image building, please read here.
To run azure-cloud-controller-manager locally:
azure-cloud-controller-manager \
--cloud-provider=azure \
--cluster-name=kubernetes \
--controllers=*,-cloud-node \
--cloud-config=/etc/kubernetes/cloud-config/azure.json \
--kubeconfig=/etc/kubernetes/kubeconfig \
--allocate-node-cidrs=true \
--configure-cloud-routes=true \
--cluster-cidr=10.240.0.0/16 \
--route-reconciliation-period=10s \
--leader-elect=true \
--port=10267 \
--v=2
To run azure-cloud-node-manager locally:
azure-cloud-node-manager \
--node-name=$(hostname) \
--wait-routes=true
It is recommended to run azure-cloud-controller-manager as a Deployment with multiple replicas, or directly with kubelet as static Pods on each control plane Node. See here for an example.
Get more detail at Deploy Cloud Controller Manager.
Please read the following documents for e2e test information:
- Dependency management
- Cloud provider config
- Azure load balancer and annotations
- Azure permissions
- Azure availability zones
- Cross resource group nodes
- AzureDisk known issues
- AzureFile known issues
See kubernetes-sigs.github.io/cloud-provider-azure for more documentation.
Please see CONTRIBUTING.md for instructions on how to contribute.
Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.