AWS Open Source Blog

eksctl: Amazon EKS Cluster with One Command

There are a number of ways to create a Kubernetes cluster using Amazon Elastic Container Service. eksctl gives you a simple, single, one-line command to bring up a cluster with a basic VPC, and completes the process by writing a new KUBECONFIG and deploying the aws-auth ConfigMap, allowing you to get up and running with EKS in minutes. In this post co-authored with Ilya Dmitrichenko, creator of the project, we give you a quick introduction to what eksctl can do, and what the future of the project looks like.

Chris


Developers love the simplicity of Command Line Interfaces (CLI), bringing them closer to their existing workflows. While Amazon Elastic Container Service for Kubernetes (Amazon EKS) helps remove the undifferentiated heavy lifting of deploying and operating a production-grade Kubernetes cluster, it still takes multiple steps to bring up a cluster and let developers start deploying their applications.

Inspired by kubectl, Weaveworks and Amazon are bringing the familiarity of the CLI for managing Kubernetes (as with kops, kubicorn, and kubectl) to EKS in eksctl.

What is eksctl?

Amazon and Weaveworks have been collaborating on creating an open source tool for creating EKS clusters in minutes with a single command:

$ eksctl create cluster

output of eksctl create command

eksctl is written in Go and based on Amazon EKS Getting Started CloudFormation templates.

When you execute eksctl create cluster, it will take care of creating the initial AWS Identity and Access Management (IAM) Role used to allow the master control plane to connect to EKS. It will then create the base Amazon VPC architecture, and then the master control plane. Once the control plane is active, it will create a node group to bring up instances, then deploy the ConfigMap that allows the nodes to join the cluster, and, finally, create a pre-configured kubeconfig that will give you access to the cluster.

eksctl output of kubectl command

At this time, we are welcoming early contributors, and would especially appreciate your feedback and bug reports prior to 0.1.0 release.

The Future

The current version of eksctl allows you to create a number of clusters, list those, and delete them as well. We would like to expand the current functionality, for example with more usable outputs for the list and get commands, because ad-hoc cluster creation through CLI tools does not scale beyond personal use.

So what’s in store for eksctl?

For version 0.1.0, we will be addressing bug fixes found and reported by you!

For version 0.2.0, we are planning on a number of popular –addons that can be easily installed onto your EKS cluster. For example, Weave Scope, Helm, Jenkins X and KubeApps, to name just a few.

For version 0.3.0, we’d like to ensure that it complies with GitOps best practices, which means we are looking to implement a Cluster API controller. Essentially, this allows you to manage clusters in a declarative manner with eksctl apply.

The broader picture is that we would like to provide an eksctld controller that allows you to utilize kubectl apply and/or a GitOps operator (such as Weave Flux). Once in place, it allows for a wide range of uses cases, ranging from addon and node upgrades to declarative management for multiple clusters.

Let us know what you would like to see next in eksctl – reach out on Kubernetes Slack (#eks) or Twitter!


Ilya Dmitrichenko

Ilya Dmitrichenko

Ilya Dmitrichenko is a Developer Experience Engineer at Weaveworks, focused on making the adoption of microservices easier.

Prior to Weaveworks, Ilya worked at Xively, where he personally experienced the shift to a true DevOps culture. He began to shift focus down the stack, becoming one of the early evangelists of and contributors to open source projects in the Kubernetes ecosystem.

Chris Hein

Chris Hein

Chris Hein is a Partner Solutions Architect for the Amazon Partner Network where he specializes in all things containers. Before Amazon, Chris worked for a number of large and small companies like GoPro, Sproutling, & Mattel. Follow him at @christopherhein