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.
In this tutorial, part four of seven, you deploy a sample application into a Kubernetes cluster. You learn how to:
- Update a Kubernetes manifest file.
- Run an application in Kubernetes.
- Test the application.
Tip
With AKS, you can use the following approaches for configuration management:
GitOps: Enables declarations of your cluster's state to automatically apply to the cluster. To learn how to use GitOps to deploy an application with an AKS cluster, see the prerequisites for Azure Kubernetes Service clusters in the GitOps with Flux v2 tutorial.
DevOps: Enables you to build, test, and deploy with continuous integration (CI) and continuous delivery (CD). To see examples of how to use DevOps to deploy an application with an AKS cluster, see Build and deploy to AKS with Azure Pipelines or GitHub Actions for deploying to Kubernetes.
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 requires Azure CLI version 2.0.53 or later. Check your version with az --version
. To install or upgrade, see Install Azure CLI.
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.
Get your login server address using the
az acr list
command and query for your login server.az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table
Make sure you're in the cloned aks-store-demo directory, and then open the manifest file with a text editor, such as
vi
.vi aks-store-quickstart.yaml
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:latest ... - name: product-service image: <acrName>.azurecr.io/aks-store-demo/product-service:latest ... - name: store-front image: <acrName>.azurecr.io/aks-store-demo/store-front:latest ...
Save and close the file. In
vi
, use:wq
.
Run the application
Deploy the application using the
kubectl apply
command, which parses the manifest file and creates the defined Kubernetes objects.kubectl apply -f aks-store-quickstart.yaml
The following example output shows the resources successfully created in the AKS cluster:
deployment.apps/rabbitmq created service/rabbitmq created deployment.apps/order-service created service/order-service created deployment.apps/product-service created service/product-service created deployment.apps/store-front created service/store-front created
Check the deployment is successful by viewing the pods with
kubectl
kubectl get pods
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.
Command Line
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
When the
EXTERNAL-IP
address changes from pending to an actual public IP address, useCTRL-C
to stop thekubectl
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
View the application in action by opening a web browser to the external IP address of your service.
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 your Azure portal to find your deployment information.
Open your Resource Group on the Azure portal
Navigate to the Kubernetes service for your cluster
Select
Services and Ingress
underKubernetes Resources
Copy the External IP shown in the column for store-front
Paste the IP into your browser and visit your store page
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.
Azure Kubernetes Service
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for