🚀 Automated Node.js Deployment on AKS using Helm & GitHub Actions
Manual deployments are quickly becoming a thing of the past. I recently implemented a fully automated continuous deployment pipeline for a Node.js application on Azure Kubernetes Service (AKS) using Helm charts and GitHub Actions—and the impact has been huge.
💡 Project Overview
The goal was simple:
Automate the entire deployment lifecycle—from code commit to production—using modern DevOps practices.
Now, every code push triggers a pipeline that builds, tests, and deploys the application automatically to AKS using Helm.
🔧 Tech Stack
- Node.js – Application runtime
- Azure Kubernetes Service (AKS) – Scalable Kubernetes platform
- Helm Charts – Kubernetes package manager for clean deployments
- GitHub Actions – CI/CD automation engine
⚙️ How the Workflow Works
1️⃣ Developer pushes code to GitHub
2️⃣ GitHub Actions pipeline is triggered
3️⃣ Application is built and tested
4️⃣ Docker image is created and pushed to registry
5️⃣ Helm chart deploys/updates the application on AKS
👉 Result: Zero manual intervention, fully automated delivery
🔥 Key Benefits
✔️ Automated Deployments
No more manual kubectl commands
✔️ Consistency Across Environments
Helm ensures standardized deployments
✔️ Faster Releases
Code changes go live quickly and reliably
✔️ Reduced Downtime
Rolling updates via Kubernetes
✔️ Scalability
AKS handles load and scaling seamlessly
🎯 Why This Matters
Traditional deployment methods can be:
❌ Time-consuming
❌ Error-prone
❌ Difficult to scale
With this setup:
- ⚡ Faster development cycles
- 🔄 Continuous delivery
- 🔍 Better visibility into deployments
- 🔐 Improved reliability and control
🧠 Key Learnings
- Writing reusable and clean Helm charts
- Configuring GitHub Actions workflows for CI/CD
- Managing container images and deployments on AKS
- Understanding end-to-end Kubernetes deployment lifecycle
🚀 How You Can Implement This
Want to build a similar setup? Start here:
1️⃣ Create a Helm Chart
- Define Deployment, Service, and values.yaml
- Parameterize configurations for flexibility
2️⃣ Configure GitHub Actions
Create a workflow file like:
name: Node.js App Deploy to AKS
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Azure Login
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Set AKS context
uses: azure/aks-set-context@v3
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
cluster-name: CKA
resource-group: Avadhoot
- name: Build and Push Docker image to ACR
env:
ACR_NAME: avadhoot.azurecr.io
IMAGE_NAME: node-app
IMAGE_TAG: latest
run: |
az acr login --name avadhoot
docker build -t $ACR_NAME/$IMAGE_NAME:$IMAGE_TAG .
docker push $ACR_NAME/$IMAGE_NAME:$IMAGE_TAG
- name: Install Helm
run: |
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
- name: Deploy Helm chart
run: |
helm upgrade --install nodeapp ./node-app \
--set image.repository=avadhoot.azurecr.io/avadhoot \
--set image.tag=latest
3️⃣ Deploy to AKS
- Connect your cluster
- Run Helm deployment via pipeline
- Monitor rollout using
kubectl get pods
📌 Final Thoughts
This setup is a perfect example of modern DevOps in action—automated, scalable, and reliable.
If you’re working with Kubernetes and want to streamline deployments, combining Helm + GitHub Actions + AKS is a powerful approach worth implementing.
🔖 Tags:
#DevOps #Kubernetes #AKS #Helm #GitHubActions #NodeJS #CloudNative #Automation
👉 Feel free to check the GITHUB Repo link below GitHub
Loading Viewer…
Discover more from DevOps with Patil
Subscribe to get the latest posts sent to your email.