Every cluster past its 14-month standard-support window costs an extra $4,380 a year, and it's already a line on your bill. A short read-only script prints your exposure in dollars. Four API calls. Nothing leaves your terminal.
Don't take my word for what the script does. Have your agent read it first, confirm it's read-only, and only then run it with read-only credentials. The prompt below says exactly that, and tells the agent to keep the output local.
Replace PROFILE with the AWS profile or role you'd use for a read-only audit. The agent needs nothing from this site except the script itself.
Fetch https://eksexposure.scottyah.com/eks-exposure.sh and read the whole thing before running anything.
Confirm for me that it (1) only calls these AWS APIs: eks:ListClusters, eks:DescribeCluster, eks:DescribeClusterVersions, ec2:DescribeRegions; (2) makes no other network requests (no curl, wget, or URLs other than AWS); (3) writes nothing except its own output. The IAM policy it needs is at https://eksexposure.scottyah.com/iam-policy.json; check it matches.
If all three hold, run it with --profile PROFILE --json --redact and save the output as exposure.json. Do not send the output anywhere.
Then tell me: how many clusters are in extended support and what that costs per year, which clusters are within 90 days of a forced control-plane upgrade, and the version hop each cluster needs (current to the oldest version still in standard support).
Running a stranger's script against production and pasting the output into a stranger's website is a reasonable thing to be uneasy about. So this is built to be checked, not trusted.
grep -nE 'curl|wget|http' eks-exposure.sh returns nothing at all.--redact replaces cluster names with cluster-1, cluster-2 and drops ARNs, so the output has no account ID and no names. Everything on this page works the same with redacted output.connect-src 'none', which you can see in the page source.It calls ListClusters, DescribeCluster, DescribeClusterVersions and DescribeRegions. That's the whole list. Read it before you run it; it's about 150 lines.
# needs aws CLI v2.22+ and jq, with read-only credentials curl -fsSLO https://eksexposure.scottyah.com/eks-exposure.sh less eks-exposure.sh # read it first chmod +x eks-exposure.sh ./eks-exposure.sh # human-readable report ./eks-exposure.sh --json --redact > exposure.json # no names, no account id
Flags: --profile, --regions us-east-1,us-west-2. Regions where EKS isn't enabled are skipped.
This page reads it in your browser and renders it. No upload, no request, no analytics. Open the network tab if you like.
| Cluster | Region | Ver | Support | Extra / yr | Days to billing | Days to forced upgrade | Cohort |
|---|
AWS auto-upgrades control planes after end of extended support, at any time, with no notice, and those upgrades can't be rolled back. Nodes and add-ons don't come along, so you find out when something breaks.
Each is billed $0.60 an hour instead of $0.10, or will be within 90 days. The premium alone is $4,380 per cluster per year, itemized as "extended support" on the EKS line of your bill.
Standard support lasts 14 months from the EKS release date. Extended support runs 12 more months at the higher rate, then the control plane is upgraded for you.
| Version | EKS release | Billing jumps (end of standard) | Forced upgrade (end of extended) | Status today |
|---|
Source: Amazon EKS Kubernetes version lifecycle and EKS pricing. The script pulls live dates from describe-cluster-versions; this table was checked on 2026-09-05.
One cluster, one minor version or more, three weeks, fixed price. I do the upgrade; you keep the pager. The price is quoted against the line on your bill, so the math is yours to check.
Send the JSON from the script. I'll reply within one business day with a per-cluster price and the earliest window. Multi-cluster accounts get a bundled number.
Read-only access is enough for the quote. Write access is scoped to the upgrade window and revoked at handoff.