Production-ready GitHub repository scaffold to deploy a Docker Hub-hosted web application to Amazon EKS using:
- Managed nodegroups (eksctl / AWS CLI)
- AWS Load Balancer Controller (ALB ingress)
- Cluster Autoscaler (IRSA)
- Kustomize overlays for environment management
- Horizontal Pod Autoscaler (HPA)
This repository intentionally avoids Terraform — cluster/node provisioning uses
eksctl&awsCLI.
A full end-to-end workflow to deploy your EKS cluster and web application.
make prereqsThis installs:
- AWS CLI
- kubectl
- eksctl
- Helm
- jq, unzip, ca-certificates
Cluster config file:
templates/cluster-config.yaml
Create cluster:
make cluster⏳ Takes 15–25 minutes.
Verify:
aws eks describe-cluster --name EKSWEBDEPLOY --region ap-south-1Look for: "status": "ACTIVE".
make update-kubeconfig CLUSTER=EKSWEBDEPLOY REGION=ap-south-1
kubectl get nodesYou should see your managed nodegroup nodes.
Follow docs:
docs/alb-controller-install.md
This includes:
- OIDC association
- IAM policy creation
- IRSA service account
- Helm installation
Verify:
kubectl -n kube-system get deployment aws-load-balancer-controller./scripts/install_cluster_autoscaler.sh EKSWEBDEPLOY ap-south-1Check:
kubectl -n kube-system get deployment cluster-autoscalermake create-secret DOCKER_USER=myuser DOCKER_PASS=mypass [email protected]make deploy OVERLAY=manifests/overlays/stagingmake deploy OVERLAY=manifests/overlays/prodCheck pods:
kubectl get pods -n webappkubectl -n webapp get ingressCopy the ALB DNS name into your browser.
Delete deployed app:
make destroy OVERLAY=manifests/overlays/stagingDelete entire EKS cluster:
eksctl delete cluster --name EKSWEBDEPLOY --region ap-south-1EKSWebAppDeployment/
├── Makefile # Automation: deploy, destroy, prereqs, kubeconfig, secret, etc.
├── README.md # Full documentation & setup guide
│
├── diagrams/
│ └── architecture.mmd # Mermaid architecture diagram for EKS deployment
│
├── docs/ # Additional project docs
│ ├── EKS.PNG # EKS architecture image
│ ├── alb-controller-install.md# Step-by-step ALB controller installation
│ └── best-practices.md # Production best practices for EKS workloads
│
├── manifests/ # Kubernetes manifests (Kustomize structure)
│ ├── base/ # Base YAML (Deployment, Service, HPA, Ingress, Namespace)
│ └── overlays/ # Environment overlays
│ ├── prod/ # Production overrides
│ └── staging/ # Staging overrides
│
├── mywebapp/ # Sample Node.js application deployed on EKS
│ ├── Dockerfile
│ ├── package.json
│ └── server.js
│
├── scripts/ # Fully automated helper scripts
│ ├── prerequisites.sh # Install AWS CLI, kubectl, eksctl, Helm, jq
│ ├── deploy.sh # Deploy via Kustomize + Makefile
│ ├── destroy.sh # Cleanup app resources
│ ├── create-image-pull-secret.sh # Private image pull secret generator
│ ├── create_nodegroup.sh # Extra nodegroup creation
│ └── install_cluster_autoscaler.sh # Autoscaler installation with IRSA
│
└── templates/
├── cluster-config.yaml # eksctl config: VPC, nodegroups, cluster settings
└── nodegroup-config.yaml # Optional separate nodegroup template
Your Amazon EKS cluster with ALB, Autoscaler, and Kustomize-based deployments is fully ready. Additional enhancements available:
- HTTPS with ACM
- ExternalDNS (automatic Route53 DNS management)
- Spot + On-Demand mixed nodegroups
- GitHub Actions CI/CD