Simplifying Cloud App Deployment with Azure Kubernetes Service (AKS)

Drive modernization with our step-by-step guide to hosting containerized applications in the cloud.

Parveen Singh

8 Mins Read

April 9, 2024

Table of Content

Twitter
LinkedIn
Reddit

With the acceleration of digital transformation, businesses are in a continuous upheaval to modernize their applications. A key ingredient to this transformation is adopting a cloud native approach which takes advantage of containerization of apps and orchestration benefits. But managing containers in production at scale is not a trivial task; it requires handling a lot of complex things, from securing & networking your applications to scaling them depending on the usage. This is where Azure Kubernetes Service (AKS), a managed container orchestration service steps in; providing simplified Kubernetes components management, development, and operations.

Understanding AKS and its Benefits

In a world where agility, scalability, and security are paramount in application development and deployment, Azure Kubernetes Service (AKS) plays a vital role. Providing a managed environment for deploying containerized applications, AKS is a highly powerful delivery model that offers simplified Kubernetes operations.

What is AKS?

Azure Kubernetes Service (AKS) is Microsoft’s fully managed container orchestration service, which drastically simplifies Kubernetes deployment on Azure. The key idea is abstracting away the underlying complexity of Kubernetes, thereby allowing developers to focus more on applications and less on infrastructure management.

Key Benefits of AKS

Simplified Operations:

With AKS, much of the intricate management and maintenance of Kubernetes is handled automatically, like scaling, upgrades, security, and monitoring. This frees your teams to spend more time on innovation and development.

Multi-region Availability:

AKS ensures your applications are always available for users regardless of their location. It provides automated multi-region availability, and replication of applications, making it resistant to complete regional failures.

Developer Productivity:

The integration of dev spaces into AKS allows the developers to run and debug containers directly in AKS, which drastically reduces the cycle time for development and debugging. It also supports CI/CD tooling for application deployment, making software delivery quicker and more reliable.

Enterprise-grade Security and Governance:

With Azure AD integration, AKS provides developer identity, ensuring secure access for developers and operations teams. AKS also integrates Azure Policy and Azure Security Center to provide policy compliance and threat detection.

Integrated Developer Environment:

AKS integrates seamlessly with several Azure services like Azure Logic Apps, Azure Functions, with broad support for open-source tools and APIs. Hence, you can use the tools and languages that you’re already comfortable with to develop applications.

Scaling and Performance:

AKS provides powerful scalability features. It uses the Kubernetes-native ‘Horizontal Pod Autoscaler’ and the ‘Azure Kubernetes Metrics Adapter’ to scale your application based on either the CPU usage or custom metrics.

Cost-Effective:

AKS does not charge any fee for Kubernetes management. You pay only for the virtual machines, which significantly reduces the costs compared to other similar platforms.

By harnessing the capabilities of AKS, your organization can experience a significant boost in efficiency, speed and resilience. This powerful service can be the stepping stone you need to fully embrace the potential of cloud-native applications and truly reap the benefits of modern software delivery.

Step by Step Guide for Deploying a Containerized Application in AKS

Before you start deploying any application, you must make sure you have Azure CLI installed and, you’re logged into it. If you don’t have Azure CLI, you can download and install it from Microsoft’s official site.

Step 1: Create an Azure Kubernetes Services (AKS) Cluster

Creating an AKS cluster is the first step before deploying any applications. Use the Azure portal’s intuitive UI or Azure CLI to create your AKS cluster.

Here’s a simple command you can use to create an AKS cluster via Azure CLI:

az aks create --resource-group MyResourceGroup --name MyAKSCluster --node-count 2 --generate-ssh-keys

Be sure to replace ‘MyResourceGroup‘ and ‘MyAKSCluster‘ with your resource group and the desired name for your AKS cluster.

Step 2: Authenticate the Cluster

Once the AKS cluster is created, authenticate it with Azure AD logins. The following command retrieves credentials for your AKS cluster:

az aks get-credentials --resource-group MyResourceGroup --name MyAKSCluster

In this step, you will be linked to the Kubernetes cluster, and this will enable communication with the cluster via the Kubernetes command-line client – ‘kubectl’.

Step 3: Deploy your Application

Now, once the cluster is authenticated, it’s time to deploy your application into the Kubernetes cluster. Have your application packaged in a Docker container image and pushed to a container registry (like Docker Hub or Azure Container Registry).

Deploy your application with the following command, replacing ‘MyApp’ with the name of your application:

kubectl create deployment MyApp --image=<image-location>

Step 4: Configure Your Services

Next, you will need to configure services via Kubernetes objects. This could include object types like Pods, Deployments, and Services. Depending on the type of application, the configuration could use ingress controllers, DNS, load balancers etc.

Expose your application to the internet with the following command:

kubectl expose deployment MyApp --port=80 --type=LoadBalancer

Step 5: Test Your Application

After successfully deploying and configuring services, it’s important to test your application to verify that it functions as expected. You can use the Kubernetes client’s ‘get services’ command to fetch the public IP of your application, and you can access it in any web browser:

kubectl get service MyApp

By following the outlined steps, you should have successfully deployed a containerized application in AKS.

While these steps provide a basic example of an application deployment in AKS, the actual deployment process might involve more complex configurations and more nuanced decisions about resource allocation and networking choices depending on your specific use case.

Monitoring and Management of your Application in AKS

Operationalizing and managing containers at scale could pose unique challenges. Azure Kubernetes Service (AKS), however, provides built-in features and integrations for monitoring and managing your applications. This robust set of services includes centralized logging, real-time container health monitoring, and performance management.

Azure Monitor for Containers

Azure Monitor for Containers allows you to monitor the performance of container workloads deployed to managed Kubernetes clusters hosted on Azure Kubernetes Service (AKS). It gives you performance visibility by collecting memory and processor metrics from controllers, nodes, and containers that are available in Kubernetes through the Metrics API.

To enable this service, navigate to the Azure portal, select your AKS cluster, and choose ‘Insights’ from the left-hand menu.

You can also activate Azure Monitor for Containers directly from the command line:

az monitor diagnostic-settings create --resource /subscriptions/yourSubscriptionID/resourcegroups/yourResourceGroup/providers/Microsoft.ContainerService/managedClusters/yourClusterName -n yourDiagSettingName --workspace /subscriptions/yourSubscriptionID/resourcegroups/yourResourceGroup/providers/microsoft.operationalinsights/workspaces/yourLogAnalyticsWorkspaceName
Log Reference Code

Azure Log Analytics

To analyze AKS logs, you can use Azure Log Analytics. It collects data from different sources such as application logs and network logs, which are crucial for troubleshooting container issues. You can use Kusto Query Language (KQL) to perform complex analytics on this data.

To enable Log Analytics, you need to integrate your AKS with Log Analytics Workspace – You can use Azure portal or CLI to accomplish this.

Once the data is in Log Analytics Workspace, you can use the Log Analytics query language to retrieve and analyze the data.

Azure Policy’s Built-in Policies

Built-in policies in AKS are aimed to help identify configurations that could potentially drift away from the ones defined as per the organization’s guidelines. Azure Policy for AKS applies to multiple scopes such as a management group, subscription, resource group, and an individual resource.

To manage these policies, go to the ‘Policy’ section under ‘Azure Policy’ in the Azure portal. Here, you can assign a policy, review non-compliant Kubernetes clusters and manage exemptions.

In conclusion, monitoring and managing your application in AKS is more than possible with Azure’s plethora of built-in management and monitoring tools, providing you with insights into your applications and infrastructure while ensuring everything runs smoothly.

Scaling applications with Azure Kubernetes Service

One of the primary benefits of hosting applications in the cloud is the ability to scale resources with ease. Azure Kubernetes Service (AKS) lets you handle sudden increases in traffic and reduces the need for manual intervention.

Kubernetes Native Scaling

Kubernetes natively supports several types of application scaling which can be applied in AKS:

  • Horizontal Pod Autoscaler (HPA): The HPA automatically scales the number of pods in a replication controller, deployment, replica set or stateful set based on observed CPU utilization. The HPA is implemented as a Kubernetes API resource and a controller.
    You can implement HPA in AKS with the following command:
kubectl autoscale deployment <deployment-name> --cpu-percent=<target-cpu-percentage> --min=<min-pods> --max=<max-pods>
  • Vertical Pod Autoscaler (VPA): The VPA sets resource requests on pod containers automatically, based on usage history and/or real-time resource usage so the right amount of resources can be allocated.
  • Cluster Autoscaler: While HPA and VPA adjust the resources for individual pods, the Cluster Autoscaler adjusts the number of nodes in a cluster. Should your application need more resources to function properly, new nodes can be added to allow for that.
    You can enable Cluster Autoscaler while creating a new AKS cluster:
az aks create \
--resource-group <rg-name> \
--name <cluster-name> \
--enable-cluster-autoscaler \
--min-count 1 \
--max-count 3

Azure Kubernetes Service (AKS) custom autoscaling

In addition to Kubernetes native scaling, AKS supports custom auto-scaling based on the custom metrics API. This allows your applications to scale based on the metrics of your choice, enabling even more precise control over your resource usage.

AKS and Virtual Nodes

AKS integrates seamlessly with Azure Container Instances through the virtual nodes feature. Virtual nodes let you elastically provision additional pods inside Container Instances without the need for additional nodes. This enables fast scaling and can be more cost-efficient, as you only pay per second for their execution time.

Remember that scaling isn’t a “fire-and-forget” operation but often needs to be adjusted. AKS provides the tools to do so, but they might require tweaking and supervision to keep your applications running smoothly and efficiently.

Conclusion

Transitioning to containerized applications using AKS is a game-changing approach that companies can adopt for efficient cloud application management. Leveraging AKS to deploy, scale, and manage containers allows enterprises to stay agile, scale quickly and be cost-effective.


Discover more from Parveen Singh

Subscribe to get the latest posts sent to your email.

Recommended Readings

Discover more from Parveen Singh

Subscribe now to keep reading and get access to the full archive.

Continue reading