Amazon EKS — AWS Console Setup
Creating an EKS cluster through the AWS Console is useful for understanding the components involved. However, it’s not recommended for production — use eksctl or Terraform instead.
When to Use the Console
| Scenario | Recommendation |
|---|---|
| Learning what an EKS cluster consists of | ✅ Console is helpful |
| Visual exploration of EKS settings | ✅ Console is helpful |
| One-time ad hoc cluster | ⚠️ Acceptable but not ideal |
| Production workloads | ❌ Use Terraform or eksctl |
| Repeatable infrastructure | ❌ Use Terraform or eksctl |
Prerequisites
Before creating a cluster in the Console, you need:
- An EKS cluster IAM role — The cluster needs an IAM role with the
AmazonEKSClusterPolicyattached - A VPC with subnets — At least 2 subnets in different AZs
- Security groups — Or let EKS create the default cluster security group
Step 1 — Create the Cluster IAM Role
- Go to IAM Console → Roles → Create role
- Select AWS service → Choose EKS → Select EKS - Cluster
- The
AmazonEKSClusterPolicyis automatically attached - Name the role:
eksClusterRole - Click Create role
Trust Policy (created automatically)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "eks.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
Step 2 — Create a VPC (If You Don’t Have One)
Use the AWS CloudFormation quick-create for the recommended EKS VPC:
- Go to CloudFormation → Create stack
- Use the Amazon-provided template:
https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml - This creates a VPC with:
- 2 public subnets
- 2 private subnets
- NAT Gateway
- Internet Gateway
- Proper subnet tags for EKS
Step 3 — Create the EKS Cluster
- Go to EKS Console → Add cluster → Create
- Fill in:
- Name:
my-cluster - Kubernetes version:
1.29 - Cluster service role: Select
eksClusterRole
- Name:
- Networking:
- VPC: Select your VPC
- Subnets: Select at least 2 subnets in different AZs
- Security groups: Leave default (EKS creates one)
- Cluster endpoint access: Choose based on your needs
- Logging:
- Enable API server, Audit, and Authenticator logs
- Add-ons:
- Keep defaults: CoreDNS, kube-proxy, VPC CNI
- Review and Create
Duration: ~10-15 minutes for the cluster to become Active.
Step 4 — Create a Node Group
After the cluster is Active:
- Go to your cluster → Compute tab → Add node group
- Node group configuration:
- Name:
standard-nodes - Node IAM role: Create a new role with:
AmazonEKSWorkerNodePolicyAmazonEKS_CNI_PolicyAmazonEC2ContainerRegistryReadOnly
- Name:
- Compute:
- AMI type: Amazon Linux 2023
- Instance types: m5.large
- Disk size: 50 GB
- Scaling:
- Min: 2, Max: 4, Desired: 2
- Networking:
- Select private subnets for worker nodes
- Create
Step 5 — Configure kubectl
After the node group is Active:
aws eks update-kubeconfig \
--region us-east-1 \
--name my-cluster
kubectl get nodes
Expected output:
NAME STATUS ROLES AGE VERSION
ip-10-0-1-123.ec2.internal Ready <none> 2m v1.29.x
ip-10-0-2-456.ec2.internal Ready <none> 2m v1.29.x
Why Console is Not Recommended for Production
| Issue | Explanation |
|---|---|
| Not repeatable | Every change is manual — prone to drift and errors |
| No version control | No Git history for infrastructure changes |
| Slow for multiple environments | Creating dev + staging + prod manually is tedious |
| Hard to review | No terraform plan equivalent before making changes |
| No state tracking | You can’t easily see what has changed over time |
What’s Next?
Now that you understand cluster creation, let’s learn how to configure kubectl to access your cluster.