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 eksctl.io 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 eksctl.io 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 eksworkshop.com, 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.