Enterprise AWS EKS Deployment
Highly available, multi-zone Kubernetes orchestration system deployed via Terraform. Features secured private worker nodes, automatic pod scaling, custom OIDC permissions (IRSA), and integrated AWS Load Balancer Controllers.
π‘ What We Will Learn in This Repo
-
Multi-Subnet VPC Infrastructure Design
Configure routing structures across public subnets (internet gateway) and private subnets (NAT gateway) to secure worker node pools.
-
Managed EKS Control Planes
Provision managed cluster controllers with custom security groups, node labels, and auto-scaling node groups.
-
OIDC IRSA Security Binding
Establish direct OpenID Connect mapping between Kubernetes service accounts and AWS IAM roles for minimal permission scopes.
-
Ingress Controllers & Routing
Install and customize Helm-based AWS Load Balancer controllers to expose pods securely using public ALBs.
π Step-by-Step Installation Guide
Fetch the repository to your local workspace:
git clone https://github.com/Pradeeptalari14/aws-eks-deployment.git
cd aws-eks-deployment
Download the AWS and Kubernetes provider binaries required by HCL configurations:
terraform init
Verify resource creations and security parameter inputs before execution:
terraform plan
Deploy EKS control planes and VPC settings directly to your AWS account:
terraform apply -auto-approve
Bind local kubectl commands to interact with the newly launched cloud cluster:
aws eks update-kubeconfig --region us-east-1 --name prod-eks
π Things You Need to Replace (Customization Checklist)
Configure these parameters inside variables or tfvars files to match your AWS account requirements:
| Target Element | File Location | Placeholder / Variable key |
|---|---|---|
| AWS Target Account ID | variables.tf |
aws_account_id (update default parameter) |
| EKS Cluster Name | variables.tf / terraform.tfvars |
cluster_name (defaults to prod-eks) |
| SSH Key pair | modules/node_groups/main.tf |
key_name (replace with existing key identifier) |
| S3 Backend Bucket | providers.tf |
bucket = "your-tfstate-bucket" (must exist in AWS) |
π Architectural Workflow
π οΈ Useful Commands (Project Reference)
Common CLI tasks for EKS management and cluster inspection:
# List all active nodes in the cluster:
kubectl get nodes -o wide
# Check status of cluster pods across all namespaces:
kubectl get pods -A
# Install ALB Ingress Controller using Helm:
helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
-n kube-system \
--set clusterName=prod-eks
# View active ingress routes and IPs:
kubectl get ingress -n default