This project demonstrates an end-to-end DevOps workflow to provision and manage an Amazon EKS (Elastic Kubernetes Service) cluster using Terraform, automated through a Jenkins CI/CD pipeline.
It enables infrastructure provisioning, scaling, and teardown using a parameterized pipeline with manual approval, simulating real-world production workflows.
- Cloud: AWS (EKS, EC2, IAM, VPC)
- Infrastructure as Code: Terraform
- CI/CD: Jenkins
- Container Orchestration: Kubernetes (EKS)
- Version Control: Git & GitHub
- Scripting: Bash
- 🚀 Automated EKS cluster provisioning using Terraform
- 🔄 Jenkins pipeline for infrastructure lifecycle management
- 📦 Managed Node Groups for Kubernetes workloads
- 🔐 IAM roles and policies for secure access control
- 📈 Scalable node configuration
- ⏱️ Manual approval step before infrastructure changes
- 🔥 Support for both create (apply) and destroy actions
Developer → GitHub → Jenkins Pipeline → Terraform → AWS EKS Cluster → Node Group
-
Developer pushes code to GitHub
-
Jenkins pipeline is triggered
-
Terraform initializes and validates configuration
-
Terraform plan is generated
-
Manual approval is required
-
Based on input:
apply→ creates EKS clusterdestroy→ deletes infrastructure
- Managed Kubernetes control plane
- Uses IAM role for cluster permissions
-
EC2 instances as worker nodes
-
Auto-scaling configuration:
- Min: 1
- Max: 2
- Desired: 1
- Uses default VPC
- Public subnets for cluster and nodes
git clone https://github.com/Manikandan-Premkumar/Deploy.git
cd Deploy-
Install required plugins:
- Git
- Pipeline
- Docker (optional)
-
Add AWS credentials in Jenkins:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY
-
Select action:
apply→ create infrastructuredestroy→ delete infrastructure
-
Approve when prompted
aws eks --region us-east-1 update-kubeconfig --name EKS_CLOUD
kubectl get nodesThis project is licensed under the MIT License.