Install on Amazon EKS Auto Mode
Prepare EKS Auto Mode storage and ingress, then use the standard Helm installation.
Prepare the Cluster
Section titled “Prepare the Cluster”Use Kubernetes 1.30 or later and enable Auto Mode compute, block storage, and load balancing. Place nodes and load balancers across at least two availability zones. Configure kubectl with an identity that can install CRDs and cluster-scoped RBAC.
aws eks update-kubeconfig --name <cluster-name> --region <region>kubectl get nodesTag public subnets with kubernetes.io/role/elb=1 and private subnets with kubernetes.io/role/internal-elb=1 when those tags are not already present.
Create a Default StorageClass
Section titled “Create a Default StorageClass”EKS Auto Mode does not create a StorageClass. Use its EBS provisioner:
apiVersion: storage.k8s.io/v1kind: StorageClassmetadata: name: auto-gp3 annotations: storageclass.kubernetes.io/is-default-class: "true"provisioner: ebs.csi.eks.amazonaws.comvolumeBindingMode: WaitForFirstConsumerallowVolumeExpansion: trueallowedTopologies: - matchLabelExpressions: - key: eks.amazonaws.com/compute-type values: [auto]parameters: type: gp3 encrypted: "true"kubectl apply -f storageclass.yamlkubectl get storageclassWaitForFirstConsumer places an EBS volume in the selected pod’s availability zone.
Create an ALB IngressClass
Section titled “Create an ALB IngressClass”Use IngressClassParams to share one ALB and attach an ACM certificate:
apiVersion: eks.amazonaws.com/v1kind: IngressClassParamsmetadata: name: varroa-albspec: scheme: internet-facing group: name: varroa certificateARNs: - arn:aws:acm:<region>:<account-id>:certificate/<certificate-id>---apiVersion: networking.k8s.io/v1kind: IngressClassmetadata: name: albspec: controller: eks.amazonaws.com/alb parameters: apiGroup: eks.amazonaws.com kind: IngressClassParams name: varroa-albkubectl apply -f ingress-class.yamlkubectl get ingressclass albThe shared group is a trust boundary. Only namespaces whose administrators may share an ALB should use this class.
Configure Varroa to use it:
global: domain: example.comfrontend: host: app.example.comingress: enabled: true className: albThe ACM certificate must cover the dashboard and controller names. Subdomain routing usually needs app.example.com and *.example.com. Path routing needs only the dashboard hostname. Create Route 53 records manually or use external-dns with least-privilege permissions for the selected hosted zone.
Enable HPA Metrics
Section titled “Enable HPA Metrics”EKS does not install Metrics Server by default. Install it as an EKS community add-on or from the upstream manifest when gateway and BFF HPAs should scale.
kubectl get apiservice v1beta1.metrics.k8s.ioWait for the APIService Available condition before relying on HPA scaling.
Install and Verify
Section titled “Install and Verify”Follow Install with Helm, then check:
kubectl get pods -n varroa-systemkubectl get ingress -Akubectl get pvc -AThe dashboard Ingress should receive an ALB hostname. DNS and ACM must be ready before browser login succeeds. If a pod reports exec format error, use a multi-architecture image or select nodes matching that image architecture.
Before deleting the cluster, delete controllers and ingress resources. Confirm that ALBs, target groups, security groups, and EBS volumes have been removed to avoid retained AWS charges.