URL has been copied successfully!
URL has been copied successfully!
URL has been copied successfully!
URL has been copied successfully!
URL has been copied successfully!
Share:
Twitter
LinkedIn
Facebook
Reddit
Follow by Email
Copy link
Threads
Bluesky
Reading Time: 5 minutes

I spotted something land in the Azure CLI extensions repo this week. PR #9669 adds CLI support for App Routing Istio, including new --enable-app-routing-istio flags on az aks create and az aks update, plus dedicated az aks approuting gateway istio enable and disable subcommands in the aks-preview extension. The PR merged on 16 March 2026.

If you are running Application Routing with NGINX today and wondering what the managed migration path actually looks like, this is it starting to take shape.

Why this matters

The upstream Ingress NGINX project ended maintenance in March 2026. Microsoft committed to security-only patches for the Application Routing add-on’s NGINX path through November 2026. After that, you need to be somewhere else.

Back in November 2025, the AKS engineering team was clear about the direction: Gateway API is the strategic path, and Application Routing with Gateway API powered by the Istio control plane was planned for the first half of 2026. This PR is that work showing up in the CLI.

For teams using Application Routing today, it means the migration does not have to involve stepping outside the managed add-on model. You are not being pushed into self-managing Envoy Gateway or standing up your own Istio installation. You stay in az aks approuting commands and swap the backend.

What the PR actually adds

The PR adds --enable-app-routing-istio (short form --enable-ari) and --disable-app-routing-istio (--disable-ari) to az aks create and az aks update, plus a new dedicated command group:

  • az aks approuting gateway istio enable
  • az aks approuting gateway istio disable

Worth being clear: --enable-gateway-api is not new here. That flag for installing the Gateway API CRDs already existed. This PR adds the Istio-specific App Routing layer that sits on top of those CRDs.

So no, this is not “turn on all of Istio on AKS with one flag”. The PR help text is explicit: this is an ingress-only version of Istio for App Routing. It does not provide service mesh functionality such as mTLS or traffic management between services, and it cannot be used at the same time as the full Istio service mesh add-on (--enable-azure-service-mesh). If you try to combine them, the command will fail.

Step 1: Register the preview feature flag

Before using any of the new flags, register the feature flag on your subscription.

Do not move on until the feature state shows Registered. It usually takes a few minutes.

Step 2a: New cluster

For a fresh test cluster, set your variables and create with both switches:

Step 2b: Existing cluster

For an existing cluster, use az aks update with both flags:

Or use the dedicated App Routing Istio subcommand if Gateway API CRDs are already installed on the cluster:

To disable, the command prompts for confirmation, which makes sense given it affects live ingress traffic:

Step 3: Connect and check what is installed

Pull down credentials and then check the cluster looks the way you expect before deploying anything:

Check namespaces and then verify the Gateway API resource types are present:

This is worth doing early. It tells you immediately whether the CRDs are present and whether the cluster looks the way you expect.

Step 4: Deploy a test application

Keep the test app simple. Create a namespace and deploy a basic echo server:

Now create a Gateway and an HTTPRoute to expose it. The gatewayClassName: istio is what tells the App Routing Istio controller to own this gateway:

Step 5: Verify and test

Check the Gateway and route settled cleanly:

You want to see the Gateway programmed and the route accepted. Once it has an address, grab it and test:

A response back from the echo app is the proof point. Not the fact that the create command completed. A real request through Gateway API hitting a real workload.

If something does not work

Go backwards one layer at a time:

That usually tells you quickly whether the issue is the app, the service, the route, or the Gateway implementation itself.

What I noticed

This is not the full Istio service mesh. No sidecar injection, no mTLS, no service-to-service traffic management. Istio is doing the gateway work only. That is an important distinction if you were concerned about the overhead of a full mesh rollout just to replace NGINX ingress.

The automated deployment model is useful. When you apply a Gateway resource, Istio automatically creates the Deployment, Service, HPA, and PDB for the gateway pods. You do not manage those directly. That is less operational overhead than running NGINX yourself.

Experimental Gateway API CRDs will block you. If you have previously installed Gateway API CRDs from a community Helm chart using the experimental channel, remove those before running --enable-gateway-api. Check what you have first:

This is still preview. That does not mean do not test it. It means test it like a preview. Be curious, break it, rebuild it, and see how it behaves with the sort of routes and traffic patterns you actually care about.

My recommendation

If you are on Application Routing with NGINX today, you have until November 2026 on the security patch window. That is enough time to migrate properly, but not enough to keep ignoring it.

What I would do now is spin up a dev cluster using the steps above and deploy something representative through a Gateway and HTTPRoute. The model is not difficult to grasp, but it is different enough from Ingress that you want hands-on time before touching production.

Also run the ingress2gateway tool against your existing cluster to preview how your current Ingress resources would translate:

This surfaces annotation-heavy configs that do not translate cleanly. Much better to find that out now than mid-migration.

I covered the full range of migration options in my Ingress NGINX retirement post if you want the wider picture.

Final thoughts

The Azure CLI now has support for App Routing Istio in the aks-preview extension, and the PR makes clear that Gateway API CRD installation and App Routing Istio are separate pieces you turn on together. That lines up with Microsoft’s stated plan for Application Routing with Gateway API powered by the Istio control plane for ingress only.

If you run AKS and are thinking about where ingress is heading next, this is worth spinning up and testing now. When the Gateway API conversation lands properly on your desk, you want to already have kicked the tyres.

Have you started testing Gateway API on AKS yet? Drop a comment below or reach out on X/Twitter.

Share:
Twitter
LinkedIn
Facebook
Reddit
Follow by Email
Copy link
Threads
Bluesky

Pixel Robots.

I’m Richard Hooper aka Pixel Robots. I started this blog in 2016 for a couple reasons. The first reason was basically just a place for me to store my step by step guides, troubleshooting guides and just plain ideas about being a sysadmin. The second reason was to share what I have learned and found out with other people like me. Hopefully, you can find something useful on the site.

0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *