Skip to content

getsentry/skrooge

skrooge

PyPI Changelog Tests License

A quick and dirty kubernetes cost estimator

OIG 0uCanRKKeLq7XwJysZQ3 Ebenezer scrooge standing at the helm of a ship, pencil sketch

Idea

I've been manually calculating how much scaling kubernetes deployments up or down will cost (or save!). It's a bit of grunt work every time pulling together our instance types, figuring out if the deployment is cpu-bound or memory-bound, and working out the cost. Instead we could have a CLI tool (or potentially automated during CI down the road) that could calculate these numbers for us.

Previous example (in english):

It would be nice to have a CLI tool which could do these calculations for us (and integrate with GCP pricing / instance APIs to get instance shapes and costs automatically)

Pod size: 2 cpu, 3GB RAM
Previous deployment: 32 cpu, 48GB RAM
New deployment: 64 cpu, 96GB RAM
Running on c2-standard-30 which have 30 cpu, 120GiB RAM, and cost $914/month
Up to 2 new instances to support +32 CPU, cost $1828 / month ($21,936 / year)

How a CLI tool could work:

$ kubecost --cpu 32 --mem 48 --instance c2-standard-30
c2-standard-30: 30 cpu, 120GiB RAM, $914/month
Limiting factor: CPU (ceil(32/30) = 2)
Cost: $1828 / month ($21,936 / year)

Installation

Install this tool using pip:

pip install skrooge

Usage

For help, run:

skrooge --help

You can also use:

python -m skrooge --help

Development

To contribute to this tool, first checkout the code. Then create a new virtual environment:

cd skrooge
python -m venv venv
source venv/bin/activate

Now install the dependencies, test dependencies, and GCP cost scraping dependencies:

pip install -e '.[lint,scrape,test]'

To run the tests:

pytest

To update the instances.json file:

python3 skrooge/scraper.py > skrooge/instances.json