This project shows how I automated the deployment of a full-stack application (React + Node.js) to Azure Kubernetes Service (AKS) using Helm and GitHub Actions.
- Backend: Node.js (Express)
- Frontend: React (served via Nginx)
- Containerization: Docker
- Deployment: Helm (Kubernetes package manager)
- Infrastructure: Azure Kubernetes Service (AKS)
- CI/CD: GitHub Actions
I created a CI/CD pipeline that:
- Builds Docker images for both frontend and backend.
- Pushes the images to GitHub Container Registry (GHCR).
- Deploys both services automatically to AKS using Helm.
- Manages environment variables and secrets securely using GitHub Secrets.
So, whenever I push code to the main branch — my application automatically updates on AKS 🎯
GitHub Push → GitHub Actions → Build Docker Images → Push to GHCR
→ Connect to AKS → Deploy via Helm → App Live on Internet 🌍
These values are securely stored in GitHub → Settings → Secrets → Actions:
| Secret | Description |
|---|---|
AZURE_CREDENTIALS |
Login credentials for Azure (Service Principal) |
AKS_RESOURCE_GROUP |
Resource group of AKS cluster |
AKS_CLUSTER_NAME |
Name of AKS cluster |
MONGO_URI |
MongoDB connection string |
REACT_APP_BACKEND_URL |
Backend API endpoint for frontend |
A GitHub Actions workflow builds Docker images for backend & frontend and pushes them to GHCR.
A separate workflow registers app secrets (Mongo URI, backend URL) into the AKS cluster.
Final workflow connects to AKS and deploys both frontend & backend using Helm charts.
Once deployed, run this command to find your public IP:
kubectl get service frontendThen open your browser at:
http://<PUBLIC_IP>
✅ Full-stack app (React + Node.js)
✅ Dockerized and deployed on Azure Kubernetes Service
✅ Automated using Helm and GitHub Actions
✅ Secure and production-ready setup