This project demonstrates a production-style DevOps platform built on Azure Kubernetes Service (AKS).
It implements a complete CI/CD pipeline, container security scanning, monitoring, autoscaling, and infrastructure provisioning using Terraform.
The platform deploys a Node.js application using Helm through an Azure DevOps pipeline.
The platform follows a CI/CD-driven DevOps workflow.
Developer commits code โ Azure DevOps pipeline triggers automatically โ Docker image is built โ Image is scanned using Trivy โ Image is pushed to Azure Container Registry (ACR) โ Helm deploys the application to Azure Kubernetes Service (AKS) โ Prometheus collects system metrics โ Grafana visualizes operational dashboards
| Category | Technology |
|---|---|
| Cloud Platform | Microsoft Azure |
| CI/CD | Azure DevOps |
| Containerization | Docker |
| Orchestration | Kubernetes (AKS) |
| Deployment | Helm |
| Infrastructure as Code | Terraform |
| Container Registry | Azure Container Registry |
| Monitoring | Prometheus |
| Visualization | Grafana |
| Security Scanning | Trivy |
| Performance Testing | k6 |
aks-devops-project
โ
โโโ app.js
โโโ Dockerfile
โโโ package.json
โโโ azure-pipelines.yml
โ
โโโ helm-chart
โ โโโ templates
โ โโโ values.yaml
โ โโโ Chart.yaml
โ
โโโ k8s
โ โโโ hpa.yaml
โ โโโ ingress.yaml
โ โโโ secret-provider.yaml
โ
โโโ terraform
โ โโโ main.tf
โ โโโ variables.tf
โ โโโ outputs.tf
โ
โโโ docs
โ โโโ architecture.png
โ โโโ grafana-dashboard.png
โ
โโโ loadtest.js
โโโ README.md
The Azure DevOps pipeline automates the application delivery lifecycle.
- Build Docker Image
- Run Security Scan using Trivy
- Push Image to Azure Container Registry
- Deploy to AKS Development Environment
- Deploy to AKS Production Environment
Code Commit
โ
โผ
Azure DevOps Pipeline
โ
โโโ Docker Build
โโโ Trivy Security Scan
โโโ Push Image to ACR
โ
โผ
Helm Deployment
โ
โผ
Azure Kubernetes Service
Below is a successful Azure DevOps pipeline run showing the automated build, security scan, and deployment stages.
The platform includes a Kubernetes monitoring stack.
| Tool | Purpose |
|---|---|
| Prometheus | Metrics collection |
| Grafana | Dashboard visualization |
| Node Exporter | Node-level metrics |
| kube-state-metrics | Kubernetes resource metrics |
Below is an example Grafana dashboard used to monitor Kubernetes cluster metrics.
Metrics monitored include:
- CPU utilization
- Memory usage
- Pod health
- Node performance
- Kubernetes resource metrics
The application supports automatic scaling using Kubernetes Horizontal Pod Autoscaler (HPA).
Example configuration:
minReplicas: 2
maxReplicas: 10
targetCPUUtilizationPercentage: 50
This ensures the system scales dynamically based on workload.
Performance testing was conducted using k6.
Example results:
Total Requests: 9600
Requests/sec: ~79
Failures: 0%
Average Latency: ~249ms
This verifies application stability under simulated load.
Infrastructure is provisioned using Terraform.
Terraform provisions:
- Azure Resource Group
- Azure Kubernetes Service (AKS)
- Azure Container Registry
- Azure Key Vault
Terraform workflow:
terraform init
terraform plan
terraform apply
This allows infrastructure to be recreated consistently.
Security practices implemented in this project include:
- Container vulnerability scanning using Trivy
- Secrets management with Azure Key Vault
- TLS certificate automation using cert-manager
- Security checks integrated into CI/CD pipelines
Separate Kubernetes namespaces are used for environment isolation.
| Environment | Namespace |
|---|---|
| Development | dev |
| Production | prod |
Production deployments require manual approval gates in Azure DevOps Environments.
Deployment workflow:
Build
โ
Security Scan
โ
Deploy to DEV
โ
Manual Approval
โ
Deploy to PROD
This ensures controlled production releases.
The platform incorporates several practices commonly used in production environments.
- Automated build and deployment pipelines
- Image versioning using pipeline build IDs
- Integrated security scanning
- Cluster metrics collection using Prometheus
- Real-time dashboards using Grafana
- Horizontal Pod Autoscaler for automatic scaling
- Containerized workloads for consistent deployments
- Kubernetes self-healing capabilities
Build Docker image:
docker build -t aks-devops-app .
Run container:
docker run -p 3000:3000 aks-devops-app
Open application:
http://localhost:3000
Potential enhancements for this platform:
- Implement GitOps deployment using ArgoCD
- Add automated alerting using Prometheus Alertmanager
- Implement distributed tracing using OpenTelemetry
- Add service mesh capabilities using Istio
If you find this project useful, consider starring the repository.
Pavan Kumar Gummadi
DevOps Engineer | Kubernetes | Azure | Terraform


