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.
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 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
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.
In addition to GitOps-driven configuration management, these are some of the other
- 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
eksctlon the OS of your choice: Linux (
curl), Windows (
chocolatey), or MacOS (
Thanks to the
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.