# Deploy an application to Azure Kubernetes Service on Arm-based virtual machines

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/)
- [Motivation](https://learn.arm.com/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/how-to-1/)
- [Create the Kubernetes cluster with Azure Container Registry](https://learn.arm.com/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/how-to-2/)
- [Connecting to the cluster](https://learn.arm.com/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/how-to-3/)
- [Deploying an application](https://learn.arm.com/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/how-to-4/)
- [Next Steps](https://learn.arm.com/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/_next-steps/)

## About this Learning Path

| Skill level:       | Introductory       |
|--------------------|--------------------|
| Reading time:      | 45 min             |
| Last updated:      | 11 Sep 2026        |

| Author:            | Dawid Borycki [GitHub](https://github.com/dawidborycki) |
|--------------------|---------------------------------------------------------|
| Arm IP:            | [Neoverse](https://support.arm.com/?tab=compute-ip&Product%20Type=Infrastructure%20Processors) |
| Tags:              | [Containers and Virtualization](https://learn.arm.com/tag/containers-and-virtualization), [Microsoft Azure Cobalt](https://learn.arm.com/tag/microsoft-azure-cobalt), [Linux](https://learn.arm.com/tag/linux), [aspnetcore](https://learn.arm.com/tag/aspnetcore), [Docker](https://learn.arm.com/tag/docker), [Kubernetes](https://learn.arm.com/tag/kubernetes) |

### Who is this for?

This Learning Path is dedicated to developers interested in learning how to deploy applications to the Azure Kubernetes Cluster powered by arm64-based virtual machines.

### What will you learn?

Upon completion of this Learning Path, you will be able to:

- Create a Kubernetes cluster using the Azure Kubernetes Service (AKS).
- Deploy a containerized application to AKS.

### Prerequisites

Before starting, you will need the following:

- An [Azure subscription](https://azure.microsoft.com/en-us/free/)
- Completion of the [Deploy .NET applications to Arm virtual machines and Azure Container Registry](https://learn.arm.com/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1) and [Deploy a containerized application using Azure Container Instances](https://learn.arm.com/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2) Learning Paths.

### Summary

You’ll create an AKS cluster with Arm64-based nodes, connect it to Azure Container Registry, and deploy an application with Kubernetes manifests. Then, you’ll retrieve credentials, use `kubectl` to manage the cluster, and expose the workload with a service. You can create the cluster manually or use Terraform.

### Frequently asked questions

<details>
<summary>How do I select an arm64 node size for the AKS cluster?</summary>
In the AKS creation wizard, open **Node pools**, select **Standard DS2_v2 (change)**, and choose **Manual** scaling. Set the node count to **1**, select **Choose a size**, choose **D2pds_v5**, and select **Select**.
</details>

<details>
<summary>How do I connect kubectl to the newly created cluster?</summary>
Open Azure Cloud Shell and run `az aks get-credentials -g rg-arm64 -n aks-people`.
</details>

<details>
<summary>What Kubernetes resources does the application manifest create?</summary>
The manifest defines a deployment and a service. The deployment creates the application pods, and the service exposes those pods for access within the cluster.
</details>

<details>
<summary>Where should my container images be hosted for this setup?</summary>
The cluster is created with integration to Azure Container Registry. Use that registry to host the images that are referenced by your deployment.
</details>

<details>
<summary>What should I check if kubectl can't reach the cluster after connecting?</summary>
Confirm that you ran `az aks get-credentials` in Cloud Shell with the correct resource group (`rg-arm64`) and cluster name (`aks-people`), then run `kubectl get nodes`. If the request fails, check the active kubeconfig context and your access to the cluster before retrying.
</details>
