Note: This blog reflects an updated eksctl command as of November 11, 2019.
Today, we are happy to announce that eksctl, the official CLI for Amazon’s EKS, now includes native GitOps support. We have introduced an experimental feature where customers can use eksctl to launch Elastic Kubernetes Service (EKS) clusters with a set of GitOps managed applications that makes the cluster ready to run production workloads in minutes. This makes it easy for new users to get started running Kubernetes on AWS and for developers and to launch standard clusters for their organizations.
The eksctl command line tool already simplifies the creation of Amazon EKS clusters, including a managed control plane and worker nodes. However, once a cluster is created, customers still need to configure many different add-on software and deployment infrastructure packages before they can start deploying the applications they want to run on Kubernetes. Included almost every time are tools for managing code deployment, monitoring, and logging which are necessary to implement best practices for application deployment and management.
Setting up these tools is both time consuming and error prone, particularly for new Kubernetes users. Often, this means that users new to Kubernetes do not implement them at all. The consequence of this is that projects are often delayed as they progress through the software development lifecycle, before they can be deployed into production.
With GitOps on EKS, users can now launch a fully-configured managed Kubernetes cluster with EKS and easily add the software required to run their production applications. All of this is managed using code stored in a Git repo - tooling familiar to almost every developer.
Simplify cluster configuration with GitOps
Making changes to what is running on your cluster is as simple as changing configuration files in your repo and watching the changes roll out to your cluster. This makes it possible to start application development on a Kubernetes cluster in minutes without needing to install and configure multiple pieces of software for code deployment, monitoring, and logging.
We added a new command that connects your EKS cluster to a Git repo and deploys a profile to your cluster. The profile includes add-ons that get installed to your cluster and are configured for monitoring, logging, and deployments. Developers can easily deploy code changes and manage the configuration of their cluster using modern GitOps development best practices from the start, preventing costly mistakes and time-consuming refactoring in the future.
Eksctl GitOps in action
The easiest way to see GitOps in action on your EKS cluster is to use a profile. Create a new EKS cluster using eksctl. Then run:
EKSCTL_EXPERIMENTAL=true eksctl enable repo --git-url firstname.lastname@example.org:<example>/<example>.git --git-email<email@example.com> --cluster <example>
This command sets up your cluster with the eks-quickstart-app-dev profile. The config files you need for a production-ready cluster will be in the git repo you have provided and will get deployed to your cluster. When you make changes to the configuration within git, these changes are reflected on your cluster. The initial eksctl profile is meant to quickly set up a cluster optimized for cloud-native application development. It is included with eksctl version 0.6.0 and above and it includes the following infrastructure tools by default:
- ALB ingress controller
- Cluster autoscaler
- Kubernetes dashboard
- Fluentd & Amazon’s CloudWatch agent
- podinfo (demo application)
View a demonstration of the eks-quickstart-app-dev profile in action:
To test out this profile yourself, and to learn more ways to configure your cluster, see the documentation at eksctl.io.
Feedback and future work
Here at Weaveworks we are very excited about this new feature and we look forward to getting your feedback as we iterate on it and related areas. You can get in touch with us by raising issues on the eksctl repo, joining the mailing list, or the #eksctl channel of our public slack.
We are working on extending the number of recommended profiles and providing customers with the ability to create their own custom profiles. We’re looking forward to hearing your feedback, and any contributions are welcome!
Webinar: Automating Kubernetes with EKS and GitOps
Watch this on-demand webinar presented by Michael Hausenblas, Developer Advocate at AWS and Kalbir Sohi, eksctl Product Manager at Weaveworks where they discuss and demonstrate:
- How to get started with Amazon EKS and eksctl
- What GitOps is and what the benefits are of implementing it
- Configuration management with GitOps on Amazon EKS with eksctl
- Patterns for managing multiple environments and clusters with GitOps