This website uses cookies

Read our Privacy policy and Terms of use for more information.

Hello and welcome to this edition of Ctrl+Alt+Deploy! I’m Lauro Müller, and I’m super happy to have you here with me 😄 Let’s spend the next few minutes sharpening our skills and learning something new and relevant for running production systems 💪 Today we’re going to dive deeper into how to reason about cost estimates in AWS. We’ll use a small EKS cluster as an example, and see how many different dimensions are involved in getting a realistic estimate 💰

There is a straight answer to the question of what EKS costs: the control plane is $0.10 an hour, which comes to $73 a month. The number is correct and it is nearly useless on its own, because it describes one line on a bill that will have a dozen more, most of them larger, and several of them attached to resources nobody wrote down. This is the normal situation for any workload spanning more than a couple of AWS services, and a Kubernetes cluster spans half a dozen of them before anything has been deployed on it.

The AWS Pricing Calculator does the arithmetic once you have told it what to price, so the part that takes judgment is deciding what belongs on the list and what quantity to put beside each item. Some of those resources were never declared anywhere in your infrastructure code. Some of them are charged in two ways at once, one fixed and one variable. And the traffic figures, which are the only numbers on the estimate you invent rather than look up, have to be attributed to the paths they actually travel, or the total comes out wrong in a way that is difficult to notice afterward.

In this edition we'll work through the method rather than the prices, using a small EKS cluster as the example: what has to appear on the list, how each item is charged, and how to separate the part of the bill that arrives whether or not anyone uses the cluster from the part that depends on how much the cluster is actually used. I'll take rates primarily from the US East 1 region (N. Virginia), and while these figures differ between regions, the structure of the charges does not, and the structure is the half actually worth learning.

Stop Drowning In AI Information Overload

Your inbox is flooded with newsletters. Your feed is chaos. Somewhere in that noise are the insights that could transform your work—but who has time to find them?

The Deep View solves this. We read everything, analyze what matters, and deliver only the intelligence you need. No duplicate stories, no filler content, no wasted time. Just the essential AI developments that impact your industry, explained clearly and concisely.

Replace hours of scattered reading with five focused minutes. While others scramble to keep up, you'll stay ahead of developments that matter. 600,000+ professionals at top companies have already made this switch.

The inventory of billable resources

While our natural tendency is to start the list with the infrastructure code, this will very likely be incomplete. A cluster produces billable resources that nobody declared, and those are the ones that appear unexplained on the first bill. The clearest example is the load balancer: a Service of type LoadBalancer causes a controller inside the cluster to call the AWS API and create one, so the resource exists in your account, runs its own hourly clock, and shows up on the invoice without ever appearing in your Terraform state. The node disks are a quieter version of the same thing, since a managed node group produces an EBS volume for each instance it launches, billed per gigabyte per month at $0.08 per GiB-month for gp3. Public IPv4 addresses are a third case, one on the NAT gateway and one in each subnet the load balancer occupies, charged at $0.005 per hour each whether they are in use or sitting idle.

Subscribe to keep reading

This content is free, but you must be subscribed to Ctrl+Alt+Deploy to continue reading.

I consent to receive newsletters via email. Terms of use and Privacy policy.

Already a subscriber?Sign in.Not now