Amazon EKS — Install eksctl
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
eksctlfor 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.