sigs.k8s.io/cluster-api-provider-azure@v1.17.0/docs/book/src/managed/asomanagedcluster.md (about) 1 ## ASO Managed Clusters (AKS) 2 3 - **Feature status:** alpha, not experimental, fully supported 4 - **Feature gate:** MachinePool=true 5 6 New in CAPZ v1.15.0 is a new flavor of APIs that addresses the following limitations of 7 the existing CAPZ APIs for advanced use cases for provisioning AKS clusters: 8 9 - A limited set of Azure resource types can be represented. 10 - A limited set of Azure resource topologies can be expressed. e.g. Only a single Virtual Network resource can 11 be reconciled for each CAPZ-managed AKS cluster. 12 - For each Azure resource type supported by CAPZ, CAPZ generally only uses a single Azure API version to 13 define resources of that type. 14 - For each Azure API version known by CAPZ, only a subset of fields defined in that version by the Azure API 15 spec are exposed by the CAPZ API. 16 17 This new API defines new AzureASOManagedCluster, AzureASOManagedControlPlane, and 18 AzureASOManagedMachinePool resources. An AzureASOManagedCluster might look like this: 19 20 ```yaml 21 apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1 22 kind: AzureASOManagedCluster 23 metadata: 24 name: my-cluster 25 namespace: default 26 spec: 27 resources: 28 - apiVersion: resources.azure.com/v1api20200601 29 kind: ResourceGroup 30 metadata: 31 name: my-resource-group 32 spec: 33 location: eastus 34 ``` 35 36 See [here](https://github.com/kubernetes-sigs/cluster-api-provider-azure/blob/main/templates/cluster-template-aks-aso.yaml) for a full AKS example using all the new resources. 37 38 The main element of the new API is `spec.resources` in each new resource, which defines arbitrary, literal ASO 39 resources inline to be managed by CAPZ. These inline ASO resource definitions take the place of almost all 40 other configuration currently defined by CAPZ. e.g. Instead of a CAPZ-specific `spec.location` field on the 41 existing AzureManagedControlPlane, the same value would be expected to be set on an ASO ManagedCluster 42 resource defined in an AzureASOManagedControlPlane's `spec.resources`. This pattern allows users to define, in 43 full, any ASO-supported version of a resource type in any of these new CAPZ resources. 44 45 The obvious tradeoff with this new style of API is that CAPZ resource definitions can become more verbose for 46 basic use cases. To address this, CAPZ still offers flavor templates that use this API with all of the 47 boilerplate predefined to serve as a starting point for customization. 48 49 The overall theme of this API is to leverage ASO as much as possible for representing Azure resources in the 50 Kubernetes API, thereby making CAPZ the thinnest possible translation layer between ASO and Cluster API. 51 52 This experiment will help inform CAPZ whether this pattern may be a candidate for a potential v2 API. This 53 functionality is enabled by default and can be disabled with the `ASOAPI` feature flag (set by the `EXP_ASO_API` environment variable). 54 Please try it out and offer any feedback!