Deploying Scalable Applications on Azure: A Practical Guide

Ibne sabid saikat - Feb 18 - - Dev Community

Cloud computing has revolutionized the way applications are built and deployed, and Microsoft Azure stands at the forefront of this transformation. In this blog post, we will explore how to deploy a scalable application using Azure Kubernetes Service (AKS), Azure Container Registry (ACR), and Azure DevOps.

Why Azure for Scalable Applications?

Azure provides a range of services designed for scalability, reliability, and automation. Some key benefits include:

Managed Kubernetes (AKS): Automatically scales based on demand.

Containerized Deployment: Using Docker and Azure Container Registry (ACR).

Continuous Integration/Continuous Deployment (CI/CD): Through Azure DevOps Pipelines.

Monitoring & Logging: Using Azure Monitor and Log Analytics.

Now, let's dive into the step-by-step deployment process.

Step 1: Setting Up the Azure Environment

First, make sure you have an Azure subscription and install the necessary CLI tools.

Login to Azure

az login

Set the subscription (if needed)

az account set --subscription "YourSubscriptionID"

You will also need Azure CLI, Docker, and Kubectl installed.

Install Azure CLI

curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash

Install Kubectl

az aks install-cli

Step 2: Create an Azure Kubernetes Cluster

Create a resource group

az group create --name MyResourceGroup --location eastus

Create an AKS cluster

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

Verify the cluster is running:

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

Step 3: Push Docker Image to Azure Container Registry (ACR)

Create an ACR

az acr create --resource-group MyResourceGroup --name MyACR --sku Basic

Authenticate ACR

az acr login --name MyACR

Build and push Docker image

docker build -t myacr.azurecr.io/myapp:v1 .
docker push myacr.azurecr.io/myapp:v1

Step 4: Deploy Application to AKS

Create a deployment.yaml file:

apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 2
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: myacr.azurecr.io/myapp:v1
ports:
- containerPort: 80

Apply the deployment:

kubectl apply -f deployment.yaml
kubectl get pods

Expose the application using a LoadBalancer:

kubectl expose deployment myapp --type=LoadBalancer --port=80
kubectl get services

Step 5: Set Up CI/CD with Azure DevOps

Create a new pipeline in Azure DevOps.

Define your azure-pipelines.yml file:

trigger:

  • main

pool:
vmImage: 'ubuntu-latest'

steps:

  • task: Docker@2
    inputs:
    containerRegistry: 'MyACR'
    repository: 'myapp'
    command: 'buildAndPush'
    Dockerfile: '**/Dockerfile'

  • task: KubernetesManifest@0
    inputs:
    action: 'deploy'
    manifests: '**/deployment.yaml'
    kubernetesServiceConnection: 'MyAKSServiceConnection'

Save and run the pipeline to automate deployment.

Step 6: Monitor and Scale the Application

Monitor logs:

kubectl logs -f

Enable autoscaling:

kubectl autoscale deployment myapp --cpu-percent=50 --min=2 --max=10
kubectl get hpa

Conclusion

By following these steps, you've successfully deployed a scalable application on Azure using AKS, ACR, and Azure DevOps. This setup ensures your application is highly available, secure, and easy to maintain.

Have any questions or need further clarification? Let’s discuss in the comments below!

Happy Cloud Computing!

. . . . . .