AWS Open Source Blog

eksctl – the EKS CLI

When we launched Amazon EKS, we had a plan for a more complete command line. We were intrigued by Weaveworks’ simultaneous launch of the open source command line tool eksctl, and excited about the user feedback we were hearing. We decided, instead of building our own, to embrace eksctl as part of the EKS planning cycle, and to encourage others to contribute as well – and we’ve been happy we did!

eksctl is now officially our command line for EKS

Over the year since launched, many EKS builders have come to rely on the tool for the initial provisioning of new clusters and ongoing configuration management of long-running clusters. We continue to receive positive feedback for the fact that we backed an open source project as part the EKS product offering. Even though we endorse and support eksctl as our command line, we found that builders were confused about our level of official commitment, and we were told that our documentation was not explicit enough about eksctl. EKS builders frequently ask us to add examples and direct references to eksctl usage in our core Amazon EKS technical docs.

We listened: eksctl is now officially endorsed and supported by the EKS team, and is now included in the EKS documentation.

The EKS documentation includes specific eksctl examples and use cases. We will consistently review references to eksctl usage with each documentation revision, and we welcome suggestions about useful additions to our documentation by opening issues on the EKS open roadmap. We encourage you to investigate and consider contributing to it.

In case you haven’t tried eksctl yet, here’s how you get started …

Getting Started with eksctl

With eksctl you can create a production-ready EKS cluster with a single command:

$ eksctl create cluster

With that single command, the proper AWS Identity and Access Management (IAM) role is set up for the control plane, the control plane is added to an Amazon VPC for network access control, and the corresponding kubeconfig file is provided. eksctl also offers options to attach an EC2 autoscaling group, allowing your cluster to be ready to schedule pods as soon as your application is deployed. In this context we also encourage you to check out, an online tutorial with a wealth of hands-on modules using eksctl.

Configuration management with GitOps

When operating a production Kubernetes cluster, devops teams need a proven approach to configuration management. Many EKS users have had success with GitOps. GitOps is a term broadly applied to maintaining system configuration data under source control. GitOps can be thought of as continuous delivery for cluster configuration, which is why a well-structured command line interface is so important – reliable system provisioning automation depends on an interactive command line interface. Most application teams have established workflows to update, test, and deploy changes to live services. We recommend GitOps as a best practice for EKS users, and one of the things we love about eksctl is you can use it to implement a GitOps approach.

Community-driven development

In addition to GitOps-driven configuration management, these are some of the other eksctl features:

  • Extensible production-ready cluster: Add popular extensions with GitOps for complete end-to-end cluster management. Choose from Weave Net, Helm, AWS CI tools like AWS CodeCommit, AWS CodeBuild, Amazon Elastic Container Registry (Amazon ECR), and AWS CodeStar, as well as Jenkins X, Weave Scope, and Weave Flux.
  • Automatic scalability: Create Amazon EC2 Auto Scaling Groups easily from the command line.
  • Simple, flexible VPC networking: Build a dedicated VPC that can be configured to peer with other VPCs, made larger or smaller, work with a private subnet, or customized and used with your existing VPC.
  • Runs on your favorite OS: Install and run eksctl on the OS of your choice: Linux (curl), Windows (chocolatey), or MacOS (homebrew).

Thanks to the eksctl team!

Ilya Dmitrichenko (@errordeveloper) of Weaveworks is the creator of eksctl and its lead engineer. He is an early contributor to Kubernetes and a CNCF ambassador. Chris Hein (@christopherhein), formerly a Partner Solutions Architect and Developer Advocate at AWS, was also instrumental in developing eksctl. We’d also like to thank the many contributors from the open source community who have been contributing to and improving eksctl. We encourage you to contribute to the project by using eksctl, opening an issue, or submitting a pull request.