Amazon EKS — AWS Console Setup

2 minute read

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:

  1. An EKS cluster IAM role — The cluster needs an IAM role with the AmazonEKSClusterPolicy attached
  2. A VPC with subnets — At least 2 subnets in different AZs
  3. Security groups — Or let EKS create the default cluster security group

Step 1 — Create the Cluster IAM Role

  1. Go to IAM Console → Roles → Create role
  2. Select AWS service → Choose EKS → Select EKS - Cluster
  3. The AmazonEKSClusterPolicy is automatically attached
  4. Name the role: eksClusterRole
  5. 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:

  1. Go to CloudFormation → Create stack
  2. Use the Amazon-provided template:
    https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml
    
  3. 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

  1. Go to EKS Console → Add cluster → Create
  2. Fill in:
    • Name: my-cluster
    • Kubernetes version: 1.29
    • Cluster service role: Select eksClusterRole
  3. 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
  4. Logging:
    • Enable API server, Audit, and Authenticator logs
  5. Add-ons:
    • Keep defaults: CoreDNS, kube-proxy, VPC CNI
  6. Review and Create

Duration: ~10-15 minutes for the cluster to become Active.


Step 4 — Create a Node Group

After the cluster is Active:

  1. Go to your cluster → Compute tab → Add node group
  2. Node group configuration:
    • Name: standard-nodes
    • Node IAM role: Create a new role with:
      • AmazonEKSWorkerNodePolicy
      • AmazonEKS_CNI_Policy
      • AmazonEC2ContainerRegistryReadOnly
  3. Compute:
    • AMI type: Amazon Linux 2023
    • Instance types: m5.large
    • Disk size: 50 GB
  4. Scaling:
    • Min: 2, Max: 4, Desired: 2
  5. Networking:
    • Select private subnets for worker nodes
  6. 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

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.

Next: kubeconfig & Access →

Updated: