EKS Practical Part One
I’ve been building a lot of EKS clusters over the last few years, and decided it is finally time to share some tips, tricks, and code on how others can build some EKS clusters that are flexible, scalable, and reliable.
For this first part, I want to outline the goals of the project and some things you’ll need to follow the steps I will provide. For some readers, the rest of the guide will be more useful as a reference piece or for inspiration, but if you want to follow along and have a built-from-scratch platform, then you’ll want to pay special attention to the following.
Philosophy
The goals I have when building EKS clusters are:
Repeatable
I want a self-managed TF module that will build the parts in a flexible but opinionated way.
Scalable
The nodes and workloads need to be scalable in an automated fashion.
Flexible
While I’ll have some strong opinions on certain steps, most of what I’ll be showing will be things you can pick and choose what parts and processes to follow. Not all components are needed on all clusters, and some clusters need additional things. It depends on your workloads, internal processes and requirements, and deployment strategies.
Things You’ll Need
- A domain name to play with
- An AWS account
- A Spacelift account
- A Github account where you can make some private repos
Technologies Used
- Spacelift and Terraform for building and managing the underlying infrastructure
- many AWS services, most notably EKS, Cloudwatch, SSM, and NLBs
- Tailscale for private access to your resources
- Cloudflare for private ingress to your cluster
- ArgoCD/Helm for managing the workloads deployed on the cluster