|
1 | 1 | --- |
2 | | -title: Azure Kubernetes Service (AKS) Managed Gateway API Installation |
3 | | -description: Install Managed Kubernetes Gateway API on Azure Kubernetes Service |
| 2 | +title: Azure Kubernetes Service (AKS) Managed Gateway API Installation (preview) |
| 3 | +description: Learn how to install the Kubernetes Gateway API Custom Resource Definitions (CRDs) on your Azure Kubernetes Service (AKS) cluster using the Managed Gateway API installation. |
4 | 4 | ms.topic: how-to |
5 | 5 | ms.service: azure-kubernetes-service |
6 | 6 | author: nshankar |
7 | 7 | ms.author: nshankar |
| 8 | +ms.reviewer: schaffererin |
8 | 9 | ms.date: 01/26/2026 |
9 | 10 | # Customer intent: "As a Kubernetes administrator, I want to install the Kubernetes Gateway API Custom Resource Definitions (CRDs) to create Kubernetes Gateway API resources on my cluster." |
10 | 11 | --- |
11 | 12 |
|
12 | | -# Install Managed Gateway API CRDs (Preview) |
| 13 | +# Install Managed Gateway API CRDs on Azure Kubernetes Service (AKS) (preview) |
13 | 14 |
|
14 | | -[!INCLUDE [preview features callout](~/reusable-content/ce-skilling/azure/includes/aks/includes/preview/preview-callout.md)] |
| 15 | +The [Kubernetes Gateway API][kubernetes-gateway-api] is a specification for traffic management on Kubernetes clusters. The specification enhances [Ingress API][kubernetes-ingress-api], which lacks a unified and provider-agnostic approach for advanced traffic routing. |
15 | 16 |
|
16 | | -The [Kubernetes Gateway API][kubernetes-gateway-api] is a specification for traffic management on Kubernetes clusters. It was designed as a successor and enhancement of the [Ingress API][kubernetes-ingress-api], which lacked a unified and provider-agnostic approach for advanced traffic routing. |
| 17 | +The Managed Gateway API Installation for Azure Kubernetes Service (AKS) installs the Custom Resource Definitions (CRDs) for the Kubernetes Gateway API. With the Managed Gateway API installation, you can use Gateway API functionality in a fully supported mode on AKS. |
17 | 18 |
|
18 | | -The Managed Gateway API Installation for Azure Kubernetes Service (AKS) installs the Custom Resource Definitions (CRDs) for the Kubernetes Gateway API. With the Managed Gateway API installation, you can use Gateway API functionality in a fully supported mode on AKS. However, you must also use an AKS add-on or extension that implements the Gateway API, such as the [Istio add-on][istio-gateway-api]. |
| 19 | +## Prerequisites |
19 | 20 |
|
20 | | -## Gateway API bundle version and AKS Kubernetes version mapping |
| 21 | +- You must use an AKS add-on or extension that implements the Gateway API, such as the [Istio add-on][istio-gateway-api]. If using the Istio add-on, you must be on minor revision `asm-1-26` or later to ensure compatibility with the Managed Gateway API installation. To deploy this add-on, see [Deploy Istio-based service mesh add-on for Azure Kubernetes Service (AKS)][istio-deploy]. |
21 | 22 |
|
22 | | -The following table outlines the supported Kubernetes versions for your AKS cluster for each Gateway API bundle version for the `standard` channel. `Experimental` channel CRDs are disallowed and must be uninstalled before enabling the Managed Gateway API installation. |
| 23 | + - If you already have an existing installation of the Gateway API CRDs on your cluster, you must meet the following requirements: |
23 | 24 |
|
24 | | -| Gateway API Bundle Version | Supported Kubernetes Versions | |
25 | | -|----------------------------|-------------------------------| |
26 | | -| v1.2.1 | v1.26.0 - v1.33.x | |
27 | | -| v1.3.0 | v1.34.0+ | |
| 25 | + - Only `standard` channel CRDs can be installed on your cluster. `Experimental` channel CRDs are disallowed, and you must uninstall them before enabling the Managed Gateway API. |
| 26 | + - The Gateway API bundle version must be compatible with your cluster's Kubernetes version. For more information, see the [Supported Kubernetes versions for Gateway API bundle versions](#supported-kubernetes-versions-for-gateway-api-bundle-versions) section. |
28 | 27 |
|
29 | | -> [!NOTE] |
30 | | -> If you upgrade your AKS cluster to a new minor version after installing the Managed Gateway API CRDs, the CRDs will automatically be upgraded to the new supported Gateway API bundle version for that Kubernetes version. For instance, if you upgrade from AKS `v1.33.0` to `v1.34.0` and previously had the Managed Gateway API installed for bundle version `v1.2.1`, the CRDs are automatically upgraded to bundle version `v1.3.0`. |
| 28 | +- The [`aks-preview` extension installed and updated to version `19.0.0b4` or later](#install-or-update-the-aks-preview-extension). |
| 29 | +- The [`ManagedGatewayAPIPreview` feature flag registered to your subscription](#register-the-managed-gateway-api-preview-feature-flag). |
31 | 30 |
|
32 | | -## Prerequisites |
| 31 | +### Install or update the `aks-preview` extension |
33 | 32 |
|
34 | | -Ensure that you have at least one of the following implementations of the Gateway API installed and enabled on your cluster: |
| 33 | +[!INCLUDE [preview features callout](~/reusable-content/ce-skilling/azure/includes/aks/includes/preview/preview-callout.md)] |
35 | 34 |
|
36 | | -* [Istio add-on][istio-deploy] minor revision `asm-1-26` and later. |
| 35 | +- Install the `aks-preview` extension or update to the latest version of the extension using the [`az extension add`][az-extension-add] and [`az extension update`][az-extension-update] commands. if you're using Azure CLI. You must use `aks-preview` version `19.0.0b4` and later. |
37 | 36 |
|
38 | | - * If you already have an existing installation of the Gateway API CRDs on your cluster, then you must only have `standard` channel CRDs installed, and the Gateway API bundle version must be compatible with your cluster's Kubernetes version. See the table for the [bundle version associated with each Kubernetes version](#gateway-api-bundle-version-and-aks-kubernetes-version-mapping). |
| 37 | + ```azurecli-interactive |
| 38 | + # Install the aks-preview extension |
| 39 | + az extension add --name aks-preview |
| 40 | + |
| 41 | + # Update the aks-preview extension to the latest version |
| 42 | + az extension update --name aks-preview |
| 43 | + ``` |
39 | 44 |
|
40 | | -* Install the `aks-preview` extension using the [`az extension add`][az-extension-add] command if you're using Azure CLI. You must use `aks-preview` version `19.0.0b4` and later. |
| 45 | +### Register the Managed Gateway API preview feature flag |
41 | 46 |
|
42 | | - ```azurecli-interactive |
43 | | - az extension add --name aks-preview |
44 | | - ``` |
| 47 | +- Register the `ManagedGatewayAPIPreview` feature flag using the [`az feature register`](/cli/azure/feature#az-feature-register) command. |
45 | 48 |
|
46 | | - Update to the latest version of the extension using the [`az extension update`][az-extension-update] command: |
| 49 | + ```azurecli-interactive |
| 50 | + az feature register --namespace "Microsoft.ContainerService" --name "ManagedGatewayAPIPreview" |
| 51 | + ``` |
47 | 52 |
|
48 | | - ```azurecli-interactive |
49 | | - az extension update --name aks-preview |
50 | | - ``` |
| 53 | +## Supported Kubernetes versions for Gateway API bundle versions |
51 | 54 |
|
52 | | -## Manage the Managed Gateway API preview feature |
| 55 | +The following table outlines the supported Kubernetes versions for your AKS cluster for each Gateway API bundle version for the `standard` channel: |
53 | 56 |
|
54 | | -You can register the `ManagedGatewayAPIPreview` feature flag by using the [`az feature register`](/cli/azure/feature#az-feature-register) command: |
| 57 | +| Gateway API bundle version | Supported Kubernetes versions | |
| 58 | +|----------------------------|-------------------------------| |
| 59 | +| v1.2.1 | v1.26.0 - v1.33.x | |
| 60 | +| v1.3.0 | v1.34.0+ | |
55 | 61 |
|
56 | | -```azurecli-interactive |
57 | | -az feature register --namespace "Microsoft.ContainerService" --name "ManagedGatewayAPIPreview" |
58 | | -``` |
| 62 | +> [!NOTE] |
| 63 | +> If you upgrade your AKS cluster to a new minor version after installing the Managed Gateway API CRDs, the CRDs automatically upgrade to the new supported Gateway API bundle version for that Kubernetes version. For instance, if you upgrade from AKS `v1.33.0` to `v1.34.0` and previously had the Managed Gateway API installed for bundle version `v1.2.1`, the CRDs automatically upgrade to bundle version `v1.3.0`. |
59 | 64 |
|
60 | | -Then you can install or uninstall the Managed Gateway API CRDs. |
| 65 | +## Create a new AKS cluster with Managed Gateway API CRDs installed |
61 | 66 |
|
62 | | -# [Install CRDs](#tab/install) |
| 67 | +- Create a new AKS cluster with Managed Gateway API CRDs installed using the [`az aks create`][az-aks-create] command with the `--enable-gateway-api` flag. You can also enable a supported add-on, such as the Istio service mesh add-on, in the same command. The following example command creates a new AKS cluster with the Managed Gateway API installation and the Istio service mesh add-on enabled: |
63 | 68 |
|
64 | | -1. You can run the [`az aks create`][az-aks-create] command to install the Managed Gateway API CRDs on a newly created cluster. You must also enable an implementation of the Gateway API to enable the managed CRD installation. |
| 69 | + ```azurecli-interactive |
| 70 | + az aks create --resource-group myResourceGroup --name myAKSCluster --enable-gateway-api --enable-azure-service-mesh |
| 71 | + ``` |
65 | 72 |
|
66 | | - ```azurecli-interactive |
67 | | - # Example: enable the managed Gateway API installation with the Istio service mesh add-on |
68 | | - az aks create -g $RESOURCE_GROUP -n $CLUSTER_NAME --enable-gateway-api --enable-azure-service-mesh |
69 | | - ``` |
| 73 | +## Install Managed Gateway API CRDs on an existing AKS cluster |
70 | 74 |
|
71 | | -1. To install the Managed Gateway API CRDs on an existing cluster with a supported implementation enabled, run the following command: |
| 75 | +- Install Managed Gateway API CRDs on an existing cluster with a supported implementation enabled using the [`az aks update`][az-aks-update] command with the `--enable-gateway-api` flag. |
72 | 76 |
|
73 | | - ```azurecli-interactive |
74 | | - az aks update -g $RESOURCE_GROUP -n $CLUSTER_NAME --enable-gateway-api |
75 | | - ``` |
| 77 | + ```azurecli-interactive |
| 78 | + az aks update --resource-group myResourceGroup --name myAKSCluster --enable-gateway-api |
| 79 | + ``` |
76 | 80 |
|
77 | | -1. To view the CRDs installed on your cluster, run the following command: |
| 81 | +## Verify Managed Gateway API CRD installation |
| 82 | +
|
| 83 | +1. View the CRDs installed on your cluster using the following `kubectl get crds` command: |
78 | 84 |
|
79 | 85 | ```bash |
80 | 86 | kubectl get crds | grep "gateway.networking.k8s.io" |
81 | 87 | ``` |
82 | 88 |
|
83 | | - ```output |
84 | | - gatewayclasses.gateway.networking.k8s.io 2025-08-29T17:52:36Z |
85 | | - gateways.gateway.networking.k8s.io 2025-08-29T17:52:36Z |
86 | | - grpcroutes.gateway.networking.k8s.io 2025-08-29T17:52:36Z |
87 | | - httproutes.gateway.networking.k8s.io 2025-08-29T17:52:37Z |
88 | | - referencegrants.gateway.networking.k8s.io 2025-08-29T17:52:37Z |
89 | | - ``` |
| 89 | + The output should show the installed CRDs, which are part of the Kubernetes Gateway API specification. For example: |
90 | 90 |
|
91 | | -1. Verify that the CRDs have the expected annotations and that the bundle version matches the [expected Kubernetes version](#gateway-api-bundle-version-and-aks-kubernetes-version-mapping) for your cluster. |
| 91 | + ```output |
| 92 | + gatewayclasses.gateway.networking.k8s.io 2025-08-29T17:52:36Z |
| 93 | + gateways.gateway.networking.k8s.io 2025-08-29T17:52:36Z |
| 94 | + grpcroutes.gateway.networking.k8s.io 2025-08-29T17:52:36Z |
| 95 | + httproutes.gateway.networking.k8s.io 2025-08-29T17:52:37Z |
| 96 | + referencegrants.gateway.networking.k8s.io 2025-08-29T17:52:37Z |
| 97 | + ``` |
92 | 98 |
|
93 | | - ```bash |
94 | | - kubectl get crd gateways.gateway.networking.k8s.io -ojsonpath={.metadata.annotations} | jq |
95 | | - ``` |
| 99 | +1. Verify the CRDs have the expected annotations and the bundle version matches the [expected Kubernetes version](#supported-kubernetes-versions-for-gateway-api-bundle-versions) for your cluster using the following `kubectl get crds` command: |
96 | 100 |
|
97 | | - ```output |
98 | | - { |
99 | | - "api-approved.kubernetes.io": "https://github.com/kubernetes-sigs/gateway-api/pull/3328", |
100 | | - "app.kubernetes.io/managed-by": "aks", |
101 | | - "app.kubernetes.io/part-of": <hash>, |
102 | | - "gateway.networking.k8s.io/bundle-version": "v1.2.1", |
103 | | - "gateway.networking.k8s.io/channel": "standard" |
104 | | - } |
105 | | - ``` |
| 101 | + ```bash |
| 102 | + kubectl get crd gateways.gateway.networking.k8s.io -ojsonpath={.metadata.annotations} | jq |
| 103 | + ``` |
106 | 104 |
|
107 | | -# [Uninstall CRDs](#tab/uninstall) |
| 105 | + The output should show the expected annotations, including the `gateway.networking.k8s.io/bundle-version` annotation with the expected bundle version for your cluster's Kubernetes version. For example, if your cluster is running Kubernetes `v1.33.0`, the expected bundle version is `v1.2.1`, and the output should be similar to the following: |
108 | 106 |
|
109 | | -To uninstall the Managed Gateway API CRDs, run the [`az aks update`][az-aks-update] command: |
| 107 | + ```output |
| 108 | + { |
| 109 | + "api-approved.kubernetes.io": "https://github.com/kubernetes-sigs/gateway-api/pull/3328", |
| 110 | + "app.kubernetes.io/managed-by": "aks", |
| 111 | + "app.kubernetes.io/part-of": <hash>, |
| 112 | + "gateway.networking.k8s.io/bundle-version": "v1.2.1", |
| 113 | + "gateway.networking.k8s.io/channel": "standard" |
| 114 | + } |
| 115 | + ``` |
110 | 116 |
|
111 | | -```azurecli-interactive |
112 | | -az aks update -g $RESOURCE_GROUP -n $CLUSTER_NAME --disable-gateway-api |
113 | | -``` |
| 117 | +## Uninstall Managed Gateway API CRDs on an AKS cluster |
114 | 118 |
|
115 | | ---- |
| 119 | +- Uninstall Managed Gateway API CRDs on an existing cluster using the [`az aks update`][az-aks-update] command with the `--disable-gateway-api` flag. |
| 120 | +
|
| 121 | + ```azurecli-interactive |
| 122 | + az aks update --resource-group myResourceGroup --name myAKSCluster --disable-gateway-api |
| 123 | + ``` |
116 | 124 |
|
117 | | -## Next Steps |
| 125 | +## Related content |
118 | 126 |
|
119 | | -* [Configure ingress for Istio service mesh add-on with the Kubernetes Gateway API][istio-gateway-api] |
| 127 | +- [Configure ingress for Istio service mesh add-on with the Kubernetes Gateway API][istio-gateway-api] |
120 | 128 |
|
121 | | -[istio-about]: ./istio-about.md |
| 129 | +<!-- LINKS --> |
122 | 130 | [istio-deploy]: ./istio-deploy-addon.md |
123 | 131 | [istio-gateway-api]: ./istio-gateway-api.md |
124 | 132 | [az-aks-create]: /cli/azure/aks#az-aks-create |
|
0 commit comments