AWS Open Source Blog

Weaveworks and AWS Joining Forces to Maintain Open Source eksctl

In 2019 we announced in partnership with Weaveworks, that the open source eksctl CLI tool was the officially supported CLI tool for Amazon Elastic Kubernetes Service (Amazon EKS). Jointly developed by AWS and Weaveworks, eksctl simplifies and automates much of the experience of creating EKS clusters. eksctl is written in Go and makes use of AWS CloudFormation.

As an open source project, eksctl has always encouraged and accepted contributions from the community. Over the years this has included minor fixes and features from engineers across various AWS teams. Since the project’s inception in 2018, EKS and Weaveworks have jointly worked on project direction. More recently the EKS team has started to invest more heavily in code contributions to the project, and several EKS contributors have been promoted to project maintainers.

To reflect this new joint maintainership between Weaveworks and AWS, as of today the eksctl project has been moved from the Weaveworks GitHub organization to a new top level GitHub organization https://github.com/eksctl-io that will be jointly maintained by Weaveworks and AWS moving forward. Theeksctl project can now be found at https://github.com/eksctl-io/eksctl. All issues, pull requests, releases, etc., have been moved over, and the previous https://github.com/weaveworks/eksctl URL automatically redirects to the new location, so any automation requiring the old address should continue to work.

Below we’ll cover some of the recent enhancements to eksctl, more details about the new GitHub organization, as well as what the future holds.

How eksctl has evolved over the years

eksctl makes it easy to get started running Kubernetes on AWS, helping users quickly stand up clusters ready to run applications. This includes supporting all the native features of EKS from day 1 as well as providing a location where we can simplify common tasks and experiment with usability improvements before making them part of the EKS APIs. For example, eksctl supported automatically spinning up AWS Auto Scaling groups of worker nodes before EKS launched managed node groups. It also helped users keep core cluster add-ons up to date before EKS launched EKS add-ons.

GitOps is an excellent current example where eksctl provides usability enhancements ahead of a capability being available through the EKS APIs. GitOps (originally introduced by Weaveworks and strongly recommended by the EKS team) is a set of practices to declaratively manage infrastructure and application configurations using Git as a single source of truth. Flux, an open source and Cloud Native Computing Foundation graduated project, is a great example of a GitOps implementation that helps keep Kubernetes clusters in sync with configuration sources such as Git repositories. While there is an open feature request on the AWS container roadmap for bundling Flux as an EKS add-on, in the interim, we added a feature to eksctl to automatically bootstrap an EKS cluster with Flux connected to a Git repository of your choosing.

Karpenter is another good example where eksctl helps EKS users get to production ready clusters faster. There is a separate open feature request on the containers roadmap asking for Karpenter to be fully managed by EKS (something the EKS team is researching). Again, eksctl is out ahead, with a feature already implemented to bootstrap EKS clusters with Karpenter pre-installed and configured.

Some of the other newer eksctl features to highlight include:

  • Simplified getting started experience with other AWS services: A simple command to set up permissions required for Amazon EMR on EKS.
  • Support for more clusters: Certain eksctl commands are now supported on clusters that weren’t originally created with eksctl.
  • Instance selection: Built-in support for ec2-instance-selector to help generate a list of instance types based on resource criteria such as vCPUs, memory, etc.
  • EKS Anywhere: Use eksctl for the simplest getting started experience with EKS Anywhere clusters.

Getting Started with eksctl

If you haven’t tried getting started with eksctl, it remains as easy as ever. With eksctl installed on your machine, you can create a production-ready EKS cluster with a single command:

$ eksctl create cluster

With that command, the proper AWS Identity and Access Management (IAM) roles are configured, the control plane is added to an Amazon VPC for network access control, a managed node group is created for compute capacity for applications, EKS add-ons for core networking are installed, and the corresponding kubeconfig file is provided for you to connect to the cluster.

New organization and what’s next for eksctl

The eksctl project now lives under the eksctl-io GitHub organization. The project has also moved container images from eksctl on Docker Hub to ECR Public. Official binary releases are still available on GitHub. We encourage you to join the community discussion and seek support on the new official Kubernetes Slack channel.

There are no functionality changes to eksctl features associated with this move. Development continues full steam ahead, both on support for EKS features, as well as more of those additional usability enhancements discussed above. As an officially supported project by AWS, users can continue to obtain support through their official AWS support agreements, in addition to the community support already available. The list of open issues on GitHub along with the AWS Containers Roadmap board are good places to check out more specifics on upcoming EKS and eksctl features. 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.

We’ll close with a quote from Ilya Dmitrichenko (@errordeveloper), the original creator of eksctl. He is an early contributor to Kubernetes and a CNCF ambassador now working at Docker. Ilya said “In 2018, when I started eksctl at Weaveworks, our vision was of an easy user experience for all developers, many of whom are not AWS experts. The community response was incredible and I am really honored by how AWS and Weaveworks have pushed it even further. It is really great to see where this project is heading, and how both companies are working together so well.

Mike Stefaniak

Mike Stefaniak

Mike Stefaniak is a Principal Product Manager at Amazon Web Services focusing on all things Kubernetes and delivering features that help customers accelerate their modernization journey on AWS.

Mohamed Ahmed

Mohamed Ahmed

Mohamed Ahmed is VP of Developer Platform - Product at Weaveworks.