Speculator is an automated scaling service for AWS EC2 AutoScale Groups based on Kubernetes Pod CPU/Memory Request Percentages of the cluster.
Default Ideal range is lower than typical solutions (40%-57%) because of the way Deis deploys on my cluster. Range is modifyable via environment variables.
I still build and deploy this in deis (aka: git push) but basic binary should be
buildable with a go build -o speculator *.go
Currently, its built to look at the Kubernetes internal API and will need a service account. I'm not using RBAC at the moment because of Deis as well.
It needs a few environment variables in order to run.
ASGROUPNAME - AWS AutoScaler Group Name
AWSREGION - AWS Region (default: us-east-1)
ENABLED - TRUE|FALSE Enable scaling to take place (default: False)
DISABLECOOLDOWN - TRUE|FALSE - Disable AWS ASG Cooldown timeout period
CPUWATERMARK - CPU Requests Watermark Percentage, When to scale down (default:"40")
CPUTHRESHOLD - CPU Threshold Percentage, When to scale up (default:"56")
AWS_ACCESS_KEY - AWS KEY with permissions to ASG
AWS_SECRET_ACCESS_KEY - AWS KEY with permissions to ASG
Prometheus metrics are exported (default port 5000 /metrics). Metrics are prefixed with speculator
Thorough documentation is on the wiki.
Check out CONTRIBUTING.md for notes on making contributions.
This library is licensed under the Apache 2.0 License.