
Amazon EKS Auto Mode ENABLED - Build your super-powered cluster
Deploy a Fully Functional Amazon EKS Cluster with Auto Mode Using Terraform – See How It Simplifies Operations

- Compute: It creates new nodes when pods can't fit onto existing ones, and identifies low utilization nodes for deletion.
- Networking: It configures AWS Load Balancers for Kubernetes Service and Ingress resources, to expose cluster apps to the internet.
- Storage: It creates EBS Volumes to back Kubernetes storage resources.
Note: for my EKS Cluster code without Auto Mode, I am using the GitHub repos: setheliot/xyz_infra_poc and setheliot/xyz_app_poc.
enabled=true
on cluster_compute_config
.cluster_compute_config
, this is actually enabling Auto Mode for not just compute, but for everything:- compute
- networking (load balancing)
- storage
create_cluster
, but you get them all when setting enabled=true
using the Terraform eks
module.general-purpose
node pool you are letting EKS Auto Mode select for you the instance size and number of nodes. If, however, you need more control over such things, you can create custom node pools.
AmazonEBSCSIDriverPolicy
). Auto Mode has its own CSI driver and permissions are already set up.Note: EKS purists may notice I took a shortcut when setting up CSI permissions in the "without Auto Mode" case. I should be using IRSA (IAM roles for service accounts), but am not. In the new repo "with Auto Mode enabled" I do indeed use IRSA when needed later (to give my application necessary permissions).
StorageClass
looks pretty similar. However note the different storage_provisioner
values. ebs.csi.eks.amazonaws.com
with Auto Mode enabledebs.csi.amazonaws.com
using the older CSI driver
eks
. It also shows how with Auto Mode enabled, it is using a new CSI driver, specific to Auto Mode.PersistentVolumeClaim
setup is the same. Also, later, when configuring your pods, you would reference the PersistentVolumeClaim
the same way to create the PersistentVolumes
. (Here if you are curious).IngressClass
. If you look at the "without Auto Mode" code there is no such resource, but you can see it referenced:ingress_class_name = local.ingress_class_name
IngressClass
referenced was automatically created by Helm when installing the AWS Load Balancer Controller (LBC).IngressClassParams
is optional when using LBC, but mandatory for Auto Mode.IngressClassParams
is not a standard Kubernetes resource; it is a custom resource managed inside the cluster.- Terraform does not have a built-in resource to create it, so we must use a workaround—executing the AWS CLI via Terraform to apply it.
IngressClass
. With Auto Mode enabled you can see in the code above we use:controller = "eks.amazonaws.com/alb"
IngressClass
that was created by Helm. It looks like this:controller = ingress.k8s.aws/alb
Secrets
, it still requires setting up an OIDC provider and configuring roles properly.