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
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.
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.
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
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.
At this time, we are welcoming early contributors, and would especially appreciate your feedback and bug reports prior to 0.1.0 release.
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
For version 0.1.0, we will be addressing bug fixes found and reported by you!
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.