The sections below detail each of the key EKS Anywhere components.
EKS Distro
EKS Distro is a Kubernetes distribution developed by AWS to drive the managed EKS service. AWS customizes the upstream Kubernetes binaries (like the API Server, Kube Controller Manager, etcd) for use with the EKS service. The distribution has been open-sourced, and all the container images required to deploy an EKS-equivalent cluster are publicly available. The public availability of the components running the managed EKS service allows administrators to deploy EKS Anywhere clusters outside of the AWS cloud.
The container images provided by AWS as part of EKS Distro include:
- Kube API Server
- Kube Controller Manager
- CoreDNS
- etcd
- Kube Proxy
- Kube Scheduler
Deploying an EKS Anywhere cluster with the container images provided by EKS Distro enables users to create on-premise Kubernetes clusters with the same configuration as the managed EKS service. Every configuration parameter of the above binaries will match the managed EKS service's implementation, assuring administrators that their on-premise EKS Anywhere clusters have a configuration consistent with the cloud-managed variant.
Since EKS Anywhere aims to provide a mirrored EKS experience for on-premise users, configuration consistency is essential. EKS Distro is the most significant element of fulfilling EKS Anywhere's objective.
eksctl
The eksctl command-line tool is the interface for users to interact with their EKS Anywhere clusters. The open-source tool is developed in collaboration between AWS and Weaveworks and is responsible for provisioning, upgrading, and managing EKS Anywhere clusters. eksctl can also operate cloud-managed EKS clusters.
The eksctl tool can perform administrative tasks for EKS Anywhere, like those summarized in the table below.
Use case |
eksctl command |
Creating clusters |
eksctl anywhere create cluster |
Installing packages (like Prometheus and CertManager) |
eksctl anywhere install package |
Upgrading cluster versions |
eksctl anywhere upgrade cluster |
Generating cluster configuration manifests |
eksctl anywhere generate clusterconfig |
eksctl is used to manage the entire lifecycle of an EKS Anywhere cluster and is an essential tool for administrators to familiarize themselves with.
ClusterAPI
ClusterAPI (CAPI) is an open-source Kubernetes project to manage the clusters' lifecycle through a standardized API. CAPI supports cluster bootstrapping actions like setting up control plane binaries, initializing etcd nodes, and enabling cluster networking. EKS Anywhere uses CAPI to manage clusters created via eksctl. Commands executed for eksctl (such as upgrading clusters) are passed onto CAPI, which can handle the underlying operations like updating container image versions for control plane components.
While administrators interact with CAPI via the clusterctl tool in traditional setups, EKS Anywhere only requires eksctl to interface with CAPI's operations. Even though CAPI is somewhat abstracted and hidden from the administrator for simplicity, there are benefits to familiarizing yourself with this project to assist in troubleshooting cluster operational issues, such as failed upgrades.
Tinkerbell
Tinkerbell is an open-source project that aims to simplify operating system provisioning for on-premise bare metal platforms. It configures operating system components like DHCP, network interfaces, cloud-init, and ensures the kernel is available in the installed system.
EKS Anywhere leverages Tinkerbell's capabilities when an administrator installs this project on a bare metal system.
Flux
Flux is a GitOps tool designed to allow administrators to deploy and reconcile application and infrastructure manifests declaratively. Administrators can commit manifests to a Git repository and rely on Flux to automatically synchronize and deploy changes by watching for repository changes. EKS Anywhere allows administrators to connect Flux and a target cluster to enable GitOps-managed clusters.
Administrators can then commit cluster infrastructure configuration to a Git repository, and rely on Flux to update their EKS Anywhere clusters accordingly. Storing and deploying configuration information for EKS Anywhere clusters this way enables administrators to benefit from version control, tracking change history, auditing change owners, backing up cluster configurations, and enabling easier rollback.