Amazon EKS — Install eksctl

2 minute read

Install eksctl

eksctl is the official CLI tool for creating and managing Amazon EKS clusters. Think of it as the “easy button” for EKS — one command creates a VPC, subnets, NAT gateways, the EKS cluster, and worker nodes.


What is eksctl?

eksctl (pronounced “eks-cuttle”) is a CLI tool created by Weaveworks and adopted as the official EKS CLI by AWS. Under the hood, it generates and executes AWS CloudFormation templates.

What eksctl Creates
┌────────────────────────────────────────────────┐
│  One eksctl command creates ALL of this:        │
│                                                │
│  ✅ VPC with public and private subnets         │
│  ✅ Internet Gateway                            │
│  ✅ NAT Gateway(s)                              │
│  ✅ Route tables                                │
│  ✅ Security groups                             │
│  ✅ IAM roles (cluster role + node role)        │
│  ✅ EKS cluster                                 │
│  ✅ Managed node group                          │
│  ✅ kubeconfig update                           │
└────────────────────────────────────────────────┘

Install eksctl

macOS

$ brew tap weaveworks/tap
$ brew install weaveworks/tap/eksctl

Or without Homebrew:

$ curl --silent --location "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_Darwin_amd64.tar.gz" | tar xz -C /tmp
$ sudo mv /tmp/eksctl /usr/local/bin

Linux

$ curl --silent --location "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_Linux_amd64.tar.gz" | tar xz -C /tmp
$ sudo mv /tmp/eksctl /usr/local/bin

Windows (PowerShell)

choco install eksctl

Or download from GitHub releases.


Verify Installation

$ eksctl version
0.175.0

How eksctl Works

When you run eksctl create cluster, here’s what happens:

eksctl create cluster
         │
         ▼
┌──────────────────────┐
│  Generates            │
│  CloudFormation       │
│  templates            │
└──────┬───────────────┘
       │
       ▼
┌──────────────────────┐
│  Creates              │
│  CloudFormation       │
│  stacks               │
│  • eksctl-<name>-cluster
│  • eksctl-<name>-nodegroup-ng-xxx
└──────┬───────────────┘
       │
       ▼
┌──────────────────────┐
│  Resources created:   │
│  • VPC + subnets      │
│  • EKS cluster        │
│  • Node group         │
│  • IAM roles          │
└──────┬───────────────┘
       │
       ▼
┌──────────────────────┐
│  Updates kubeconfig   │
│  (~/.kube/config)     │
└──────────────────────┘

eksctl vs AWS Console vs Terraform

Feature eksctl AWS Console Terraform
Speed ~15 min ~30 min ~20 min
Repeatability Yes (YAML config) No (manual) Yes (HCL files)
Learning curve Low Low Medium
Customization Medium High High
State management CloudFormation N/A Terraform state
Best for Quick clusters, learning Exploration Production IaC

Recommendation: Use eksctl for this tutorial and learning. Use Terraform for production clusters that need to be managed as infrastructure-as-code.


Enable Shell Completion

Bash

$ echo 'source <(eksctl completion bash)' >> ~/.bashrc
$ source ~/.bashrc

Zsh

$ echo 'source <(eksctl completion zsh)' >> ~/.zshrc
$ source ~/.zshrc

Common Mistakes

Mistake Fix
Old eksctl version brew upgrade eksctl or re-download
AWS CLI not configured eksctl needs AWS credentials — run aws configure first
Wrong AWS region Set AWS_DEFAULT_REGION or pass --region flag

Quick Reference

# Install (macOS)
$ brew install weaveworks/tap/eksctl

# Verify
$ eksctl version

# Enable completion
$ source <(eksctl completion zsh)

# Help
$ eksctl --help
$ eksctl create cluster --help

What’s Next?

Two more tools to install: kubectl & Helm.