Skip to content
The official CLI for Amazon EKS
Go Shell CSS HTML Makefile Dockerfile JavaScript
Branch: master
Clone or download
Latest commit cfc50ff Jan 9, 2020
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Use $HOME in circleci config Jan 9, 2020
.docker Update build image manifest and tag file Jan 9, 2020
.github Update PR template with mention of the maintainer GH team Dec 12, 2019
cmd Rebased with master Jan 9, 2020
docs Release notes for 0.12.0 Dec 20, 2019
examples 16-fargate-profile.yaml: Fargate profile names now follow fp-* naming… Dec 13, 2019
hack Add a script to get CoreDNS manifest from a running cluster Jun 17, 2019
integration Fix integration tests flags parsing for Go 1.13 Dec 9, 2019
logo Make a proper logo and redesing the page Jun 8, 2018
pkg Update generated files Jan 9, 2020
site Add examples to site Dec 20, 2019
.build_image_manifest Revert "Enable loading of private Go modules" Dec 11, 2019
.editorconfig Update editor config for yaml files Nov 12, 2019
.gitignore Remove docker cache and refactor circleci configuration Dec 19, 2019
.golangci.yml Removed redudant skip-dirs entries Jan 9, 2020
.goreleaser.brew.yml Update tagline Jul 25, 2019
.goreleaser.yml Update goreleaser config to use new schema Jul 5, 2019
.requirements Rebased with master Jan 9, 2020
CNAME Create CNAME Jun 5, 2018
CODE_OF_CONDUCT.md eksctl always lowercase Jun 27, 2019
CONTRIBUTING.md Remove flaky tests Oct 29, 2019
DCO Community docs (#162) Aug 15, 2018
Dockerfile Add extra checks to build pipeline Jan 9, 2020
LICENSE Revert "Add app-dev quickstart components" Oct 9, 2019
LICENSE.CDDL license: document files under MPL-2 and CDDL Aug 9, 2018
LICENSE.MPL-2.0 Remove trailing whitespace Oct 9, 2018
Makefile Removed the go get for lint target Jan 9, 2020
Makefile.common Use image as cache store Oct 14, 2019
Makefile.docker Add extra checks to build pipeline Jan 9, 2020
OWNERS Community docs (#162) Aug 15, 2018
README.md Use --cluster for non-cluster commands Oct 16, 2019
build-image-manifest.sh Remove docker cache and refactor circleci configuration Dec 19, 2019
do-release-candidate.sh Remove docker cache and refactor circleci configuration Dec 19, 2019
do-release.sh Remove docker cache and refactor circleci configuration Dec 19, 2019
eksctl-image-builder.sh Use image as cache store Oct 14, 2019
go.mod Rebased with master Jan 9, 2020
go.sum Rebased with master Jan 9, 2020
goreleaser-local.yaml Add Makefile rule for generating builds Nov 28, 2019
humans.txt Fix broken link in EKS managed nodegroups guide (#1598) Nov 26, 2019
install-build-deps.sh Update the build image manifest Jan 9, 2020
tag-release-candidate.sh Fix validation of git origin in release scripts Nov 11, 2019
tag-release.sh Fix validation of git origin in release scripts Nov 11, 2019
tools.go Rebased with master Jan 9, 2020

README.md

eksctl - The official CLI for Amazon EKS

Circle CI Coverage Status Go Report Card

eksctl is a simple CLI tool for creating clusters on EKS - Amazon's new managed Kubernetes service for EC2. It is written in Go, and uses CloudFormation.

You can create a cluster in minutes with just one command – eksctl create cluster!

Gophers: E, K, S, C, T, & L

Need help? Join Weave Community Slack.

Installation

To download the latest release, run:

curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/latest_release/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin

Alternatively, macOS users can use Homebrew:

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

and Windows users can use chocolatey:

chocolatey install eksctl

You will need to have AWS API credentials configured. What works for AWS CLI or any other tools (kops, Terraform etc), should be sufficient. You can use ~/.aws/credentials file or environment variables. For more information read AWS documentation.

You will also need AWS IAM Authenticator for Kubernetes command (either aws-iam-authenticator or aws eks get-token (available in version 1.16.156 or greater of AWS CLI) in your PATH.

Basic usage

To create a basic cluster, run:

eksctl create cluster

A cluster will be created with default parameters

  • exciting auto-generated name, e.g. "fabulous-mushroom-1527688624"
  • 2x m5.large nodes (this instance type suits most common use-cases, and is good value for money)
  • use official AWS EKS AMI
  • us-west-2 region
  • dedicated VPC (check your quotas)
  • using static AMI resolver

Once you have created a cluster, you will find that cluster credentials were added in ~/.kube/config. If you have kubectl v1.10.x as well as aws-iam-authenticator commands in your PATH, you should be able to use kubectl. You will need to make sure to use the same AWS API credentials for this also. Check EKS docs for instructions. If you installed eksctl via Homebrew, you should have all of these dependencies installed already.

Example output:

$ eksctl create cluster
[ℹ]  eksctl version 0.6.0
[ℹ]  using region us-west-2
[ℹ]  setting availability zones to [us-west-2a us-west-2c us-west-2b]
[ℹ]  subnets for us-west-2a - public:192.168.0.0/19 private:192.168.96.0/19
[ℹ]  subnets for us-west-2c - public:192.168.32.0/19 private:192.168.128.0/19
[ℹ]  subnets for us-west-2b - public:192.168.64.0/19 private:192.168.160.0/19
[ℹ]  nodegroup "ng-98b3b83a" will use "ami-05ecac759c81e0b0c" [AmazonLinux2/1.11]
[ℹ]  creating EKS cluster "floral-unicorn-1540567338" in "us-west-2" region
[ℹ]  will create 2 separate CloudFormation stacks for cluster itself and the initial nodegroup
[ℹ]  if you encounter any issues, check CloudFormation console or try 'eksctl utils describe-stacks --region=us-west-2 --cluster=floral-unicorn-1540567338'
[ℹ]  2 sequential tasks: { create cluster control plane "floral-unicorn-1540567338", create nodegroup "ng-98b3b83a" }
[ℹ]  building cluster stack "eksctl-floral-unicorn-1540567338-cluster"
[ℹ]  deploying stack "eksctl-floral-unicorn-1540567338-cluster"
[ℹ]  building nodegroup stack "eksctl-floral-unicorn-1540567338-nodegroup-ng-98b3b83a"
[ℹ]  --nodes-min=2 was set automatically for nodegroup ng-98b3b83a
[ℹ]  --nodes-max=2 was set automatically for nodegroup ng-98b3b83a
[ℹ]  deploying stack "eksctl-floral-unicorn-1540567338-nodegroup-ng-98b3b83a"
[✔]  all EKS cluster resource for "floral-unicorn-1540567338" had been created
[✔]  saved kubeconfig as "~/.kube/config"
[ℹ]  adding role "arn:aws:iam::376248598259:role/eksctl-ridiculous-sculpture-15547-NodeInstanceRole-1F3IHNVD03Z74" to auth ConfigMap
[ℹ]  nodegroup "ng-98b3b83a" has 1 node(s)
[ℹ]  node "ip-192-168-64-220.us-west-2.compute.internal" is not ready
[ℹ]  waiting for at least 2 node(s) to become ready in "ng-98b3b83a"
[ℹ]  nodegroup "ng-98b3b83a" has 2 node(s)
[ℹ]  node "ip-192-168-64-220.us-west-2.compute.internal" is ready
[ℹ]  node "ip-192-168-8-135.us-west-2.compute.internal" is ready
[ℹ]  kubectl command should work with "~/.kube/config", try 'kubectl get nodes'
[✔]  EKS cluster "floral-unicorn-1540567338" in "us-west-2" region is ready
$

Install eksctl following the installation instructions.

To learn more abut what eksctl can do check eksctl.io. A good place to start is Getting Started. The full list of features can be found here.

Contributions

Code contributions are very welcome. If you are interested in helping make eksctl great then see our contributing guide. Or join the discussion on our mailing list.

Releases

Minor releases of eksctl should be expected every two weeks and patch releases will be made available as needed.

One or more release candidate(s) (RC) builds will be made available prior to each minor release. RC builds are intended only for testing purposes.

Get in touch

Create an issue, or login to Weave Community Slack (#eksctl) (signup).

Logo Credits

Original Gophers drawn by Ashley McNamara, unique E, K, S, C, T & L Gopher identities had been produced with Gopherize.me.

You can’t perform that action at this time.