This project demonstrates how to provision a production-ready Amazon EKS (Elastic Kubernetes Service) cluster using Terraform, with OIDC integration for GitHub Actions, and AWS IAM roles and networking fully automated.
- 🧠 Infrastructure-as-Code using Terraform
- ☁️ EKS Cluster with node groups across multiple AZs
- 🔐 GitHub Actions + OIDC + IAM Role for secure deployments
- 🌐 Public subnets with auto-assigned IPs
- 📦 Modular, reusable configuration
- ✅ Screenshots included for visual verification
graph TD
GitHubActions -->|OIDC Token| IAM[OIDC IAM Role]
IAM --> Terraform
Terraform --> EKS[Amazon EKS Cluster]
EKS --> Nodes[EC2 Node Group]
caterpillar-eks-lab/
├── terraform/
│ ├── main.tf # Main Terraform config
│ ├── github-oidc.tf # GitHub OIDC provider & IAM role
│ └── terraform.tfstate # Terraform state file
├── LICENSE # MIT License
├── README.md # This file - ✅ Clone the Repo
git clone https://github.com/RedLeopard/caterpillar-eks-lab.git
cd caterpillar-eks-lab/terraform -
🔑 Set up AWS credentials
Export your AWS access keys or use a named profile. -
⚙️ Initialize Terraform
terraform init - 📐 Review Plan
terraform plan - 🚀 Apply the Infrastructure
terraform apply - ⛅ Access the Cluster
aws eks update-kubeconfig --name caterpillar-eks-cluster
kubectl get nodes
- 🔄 GitHub Actions-based CI/CD pipeline
- 📈 Auto-scaling with Karpenter
- 📊 Prometheus + Grafana monitoring dashboards
MIT License. Feel free to use, improve, or fork this project.
Created with ❤️ by Edward Thornton
GitHub Profile • Portfolio