Edit

Tutorial - Deploy an application to Azure Kubernetes Service (AKS)

Kubernetes provides a distributed platform for containerized applications. You build and deploy your own applications and services into a Kubernetes cluster and let the cluster manage the availability and connectivity.

You can deploy the sample application in two ways:

In this tutorial, you deploy a sample application into a Kubernetes cluster directly from your workstation and manage the application by using AKS desktop. You learn how to:

  • Update a Kubernetes manifest file.
  • Deploy an application in Kubernetes.
  • Test the application.
  • View application health, logs, metrics, and composition in AKS desktop.

Before you begin

In previous tutorials, you packaged an application into a container image, uploaded the image to Azure Container Registry, and created a Kubernetes cluster. To complete this tutorial, you need the precreated aks-store-quickstart.yaml Kubernetes manifest file. This file was downloaded in the application source code from Tutorial 1 - Prepare application for AKS.

This tutorial creates and updates billable resources, such as LoadBalancer services. Use an identity with permissions to deploy workloads to AKS and read cluster resources.

This tutorial requires the installation of AKS desktop.

Update the manifest file

In these tutorials, your Azure Container Registry (ACR) instance stores the container images for the sample application. To deploy the application, you must update the image names in the Kubernetes manifest file to include your ACR login server name.

  1. Make sure you're in the cloned aks-store-demo directory, and then open the aks-store-quickstart.yaml manifest file with a text editor.

  2. Update the image property for the containers by replacing ghcr.io/azure-samples with your ACR login server name.

    containers:
    ...
    - name: order-service
      image: <acrName>.azurecr.io/aks-store-demo/order-service:1.0
    ...
    - name: product-service
      image: <acrName>.azurecr.io/aks-store-demo/product-service:1.0
    ...
    - name: store-front
      image: <acrName>.azurecr.io/aks-store-demo/store-front:1.0
    ...
    

Run the application

Deploy and manage the application by using AKS desktop

AKS desktop is an application-focused developer portal for Azure Kubernetes Service (AKS) that simplifies application deployment and management without requiring deep Kubernetes expertise.

Register your cluster with AKS desktop

  1. Make sure you're signed in to AKS desktop with the same account that has access to the AKS cluster. Once signed in, select Add from Azure Subscription.
  2. Enter the name of your Azure subscription if you have more than one. (Alternatively, select the arrow to open the drop-down list, and then select your Azure subscription.)
  3. Select your cluster, and then select Register Cluster.

Continue when the cluster status appears as connected in AKS desktop.

A video demonstrating how to add a cluster to the AKS desktop app.

Create a managed Project in AKS desktop

  1. In AKS desktop, go to the Projects tab and select Create a New Managed Project.

  2. Configure the following Project settings:

    • Basics:
      • Project Name: For example, my-dev-frontend
      • Subscription: <your-subscription-name>
      • Cluster: <your-cluster-name>

    Note

    When you set the Azure subscription and AKS cluster, AKS desktop checks for required cluster and subscription feature support.

    • Networking Policies: You can leave the default settings for this quickstart or update them as needed.

      • To expose the application publicly, change Ingress to Allow all traffic.
    • Compute Quota: Set the values for the test application. Screenshot that shows setting the values for compute quota.

    • Access: Add someone or delete the entry by deleting the line item.

  3. Under Review, verify the settings for your Project, and then select Create Project.

    Screenshot of creating a new Project in AKS desktop.

Deploy an application

  1. Provide an application name, and then select Create Application.

    Screenshot of creating a new application in AKS desktop.

  2. Select a source for your application. For this example, select Kubernetes YAML > Next. Screenshot that shows selecting application source, select Kubernetes YAML.

  3. Open aks-store-quickstart.yaml, copy and paste its contents into the editor, and then select Next. Screenshot that shows the YAML Editor with the copied and pasted YAML.

  4. Review the resources that are created, and then select Deploy and Close. Screenshot that shows the Review & Deploy summary, select Deploy and Close.

  5. The resources can take a few minutes to deploy. During this time, the project status might show Degraded while the cluster scales.

  6. Check the status of application resources by selecting Resources and then Workloads.

    Screenshot that shows the Resources tab for viewing resources and their changes. You can force a screen refresh by selecting the top window menu option Navigate > Reload.

  7. Select individual workload resources to view their details and events.

Test the application

When the application runs, a Kubernetes service exposes the application front end to the internet. This process can take a few minutes to complete.

AKS desktop

  1. Get the public IP address from Resource > Network > Service: store-front > External IP. Screenshot that shows getting the public IP address for the application.

  2. Explore the application in AKS desktop, such as viewing logs and metrics. For more information, see AKS desktop overview.

Command Line

  1. Monitor progress using the kubectl get service command with the --watch argument.

    kubectl get service store-front --watch
    

    Initially, the EXTERNAL-IP for the store-front service shows as <pending>:

    store-front   LoadBalancer   10.0.34.242   <pending>     80:30676/TCP   5s
    
  2. When the EXTERNAL-IP address changes from <pending> to a public IP address, use CTRL-C to stop the kubectl watch process.

    The following example output shows a valid public IP address assigned to the service:

    store-front   LoadBalancer   10.0.34.242   52.179.23.131   80:30676/TCP   67s
    
  3. View the application in action by opening a web browser and navigating to the external IP address of your service: http://<external-ip>.

    Screenshot of AKS Store sample application.

If the application doesn't load, it might be an authorization problem with your image registry. To view the status of your containers, use the kubectl get pods command. If you can't pull the container images, see Authenticate with Azure Container Registry from Azure Kubernetes Service.

Azure portal

Navigate to the Azure portal to find your deployment information.

  1. Navigate to your AKS cluster resource.

  2. From the service menu, under Kubernetes Resources, select Services and ingresses.

  3. Copy the External IP shown in the column for the store-front service.

  4. Paste the IP into your browser to visit your store page.

    Screenshot of AKS Store sample application.

Clean up resources

Since you validated the application's functionality, you can now remove the cluster from the application. We will deploy the application again in the next tutorial.

AKS desktop

Note

If you want to continue to the next tutorial step, don't delete the AKS desktop project.

If you're finished, select the Delete icon. In the confirmation message, select Also delete the namespace. To delete the project, select the trash can icon

Command line

  1. Stop and remove the container instances and resources using the kubectl delete command.

    kubectl delete -f aks-store-quickstart.yaml
    
  2. Check that all the application pods have been removed using the kubectl get pods command.

    kubectl get pods
    

Next steps

In this tutorial, you deployed a sample Azure application to a Kubernetes cluster in AKS. You learned how to:

  • Update a Kubernetes manifest file.
  • Run an application in Kubernetes.
  • Test the application.

In the next tutorial, you learn how to use PaaS services for stateful workloads in Kubernetes.