There are two Kubernetes control plane providers to choose from: capz or crossplane. The purpose of this document is to help you decide which control plane provider might be best for your organization to use.
CAPZ is the Azure provider for Cluster API which has more than 30 different providers that provision managed and self-managed Kubernetes clusters in a conformant way. Cluster API by itself only provisions Kubernetes clusters. However, the CAPZ project has taken a dependency on ASO which gets installed automatically along with CAPZ. ASO is a Kubernetes operator that provides a way to provision and manage any Azure resources using Kubernetes Custom Resource Definitions (CRDs). To specify additional ASO Azure resources beyond what CAPZ automatically enables to be able to be provisioned, simply specify the CRD pattern during installation.
Both CAPZ and ASO are officially staffed and supported open source projects by Microsoft which have regular releases, community calls, and Kubernetes slack channel support. ASO has an automation process which generates Kubernetes CRDs directly from the Azure APIs. This is advantageous because it allows 100% API coverage directly from the source of truth.
One other unique advantage of the CAPZ and ASO stack is there is an option to import existing production AKS clusters into the control plane. This is useful for organizations that have existing AKS clusters and want to start managing them in a GitOps platform engineering centric way like this repository demonstrates.
Crossplane is a CNCF project that provides a Kubernetes control plane to manage infrastructure resources across multiple cloud providers in a consistent way using Kubernetes Custom Resource Definitions (CRDs). The Crossplane project and Azure provider for Crossplane is open source, but supported primarily by the startup Upbound which has a paid offering based on top of Crossplane and the general community. The Azure provider for Crossplane is written on top of the Terraform go SDK for Azure, so there is a layer of abstraction between the Azure API and the CRDs.
The advantage of Crossplane is that it is cloud agnostic and can manage many resources across multiple cloud providers with a single, relatively consistent infrastructure as code YAML structure. There are also additional benefits from using the paid offering from Upbound.
If you want to run multi-cloud and highly value the ability to manage multiple non-Kubernetes-cluster cloud provider resources in a consistent way, and you don't mind going to the general open source community and/or Upbound for support, then Crossplane could be a good choice.
If you are not multi-cloud or don't care about inconsistency in non-Kubernetes-cluster resources YAML code definitions, then CAPZ and ASO is a good logical choice. It is officially supported by Microsoft and has a direct mapping to the Azure APIs. This means you can get 100% API coverage and have a direct line to the source of truth for Azure resources. Additionally, if you have existing AKS clusters, you can import them into the control plane, enabling the GitOps platform engineering pattern as demonstrated here.