Skip to main content
provisioning · aws

EKS Cluster

category
Kubernetes

What does zop.dev create for EKS Cluster?

zop.dev provisions EKS from terraform-aws-modules/eks v20.31.6 with Kubernetes pinned at 1.34, KMS envelope encryption for secrets, IRSA enabled, and 15 Helm add-ons pre-installed. Node counts are capped at 30, and the Kubernetes version is hardcoded rather than configurable, so it is not a variable you can set.

Module backing EKS Cluster.
Field Value
Cloudaws

Amazon EKS is AWS’s managed Kubernetes control plane. zop.dev provisions a fully hardened cluster with autoscaling, secret encryption, ingress, certificates, and a complete monitoring stack pre-installed, turning a multi-week platform build into a single provisioning job.

A hardened cluster with add-ons, IAM, and Route 53 wiring

EKS cluster (upstream terraform-aws-modules/eks v20.31.6) with KMS key for secret envelope encryption, RSA-2048 TLS key, self-managed node group (AL2023 AMI, containerd), aws-ebs-csi-driver addon, 3 security groups, Kong admin load-balancer target group, Route 53 wildcard CNAME to the nginx LB, Karpenter discovery tags, 6 IAM policies, 2 roles, 3 IAM users with access keys (cluster_issuer, observability_s3, velero), and Secrets Manager entries for Kafka and observability. Helm add-ons installed: cert-manager, kube-prometheus-stack, grafana, velero, cluster-autoscaler, fluent-bit, kubernetes-event-exporter, karpenter, prometheus-msteams, reloader, secrets-store-csi-driver, AppDynamics cluster-agent, kubernetes-replicator, metrics-server, ingress-nginx.

Node config, Karpenter, logging, and alert thresholds

Terminal window
Kubernetes 1.34 (hardcoded); node_config {node_type, min_count > 0, max_count < 30}; control-plane logging for api, audit, authenticator, controllerManager, scheduler; enable_irsa true; authentication_mode API_AND_CONFIG_MAP; public endpoint on; karpenter_configs {enable, machine_types[], capacity_types on-demand|spot}; velero_schedule default 0 2 * * *; cluster alert thresholds (cpu/memory 80/20, node and pod count 80, nginx 5xx 5 percent, disk 20); fluent-bit sinks: loki, http, splunk, datadog, new_relic, slack, cloudwatch; optional Kong Enterprise with CIDR whitelist.

Kubernetes 1.34 and the AL2023 worker AMI

Kubernetes version is pinned at 1.34. Worker AMI defaults to amazon-eks-node-al2023-x86_64-standard-1.34 from owner 602401143452.

What gets created that you did not ask for

This is the part worth reading before you run it. Alongside the cluster you get 3 IAM users with access keys (cluster_issuer, observability_s3, velero), 6 IAM policies, 2 roles, 3 security groups, a Route 53 wildcard CNAME pointing at the nginx load balancer, and Secrets Manager entries for Kafka and observability.

The IAM users matter most. Long-lived access keys are the credential type most security reviews flag, and they are created here because several of the Helm add-ons predate IRSA support. They are real credentials with real permissions, and they need rotating like any other.

What you cannot change

Kubernetes 1.34 is hardcoded. Not a default; hardcoded. If you need a different version this module is not the path, and upgrading is a platform change rather than a variable.

Node group max count is capped at 30. min_count must be greater than zero, so the cluster cannot scale to nothing.

The add-ons are the real cost

Fifteen Helm releases install by default: cert-manager, kube-prometheus-stack, grafana, velero, cluster-autoscaler, fluent-bit, karpenter, metrics-server, ingress-nginx and more. kube-prometheus-stack in particular is not small. It runs Prometheus, Alertmanager and Grafana with persistent volumes, and on a small cluster the monitoring stack can outweigh the workload.

Velero also creates an S3 bucket and takes a snapshot on the default 0 2 * * * schedule, which bills for storage from day one.

Where it fits

This is a batteries-included platform build, not a minimal cluster. If you want EKS and nothing else, provisioning it here and deleting fourteen add-ons is more work than starting smaller.

See it fire on your bill.

Connect an account read-only. The first findings land in minutes.

417 rule families across 353 resource types on 22 platforms. Every threshold, metric, and IAM action is documented on these pages before you grant anything.

417 rule families documented
353 resource types covered
read-only default access level
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·