Sherpa is a highly available, fast, and flexible horizontal job scaling for HashiCorp Nomad. It is capable of running in a number of different modes to suit different requirements, and can scale based on Nomad resource metrics or external sources.
- Scale jobs based on Nomad resource consumption and external metrics: The Sherpa autoscaler can use a mixture of Nomad resource checks, and external metric values to make scaling decisions. Both are optional to provide flexibility. Jobs can also be scaled via the CLI and API in either a manual manner, or by using webhooks sent from external applications such as Prometheus Alertmanager.
- Highly available and fault tolerant: Sherpa performs leadership locking and quick fail-over, allowing multiple instances to run safely. During availability issues, or deployment Sherpa servers will gracefully handle leadership changes resulting in uninterrupted scaling.
- Operator friendly: Sherpa is designed to be easy to understand and work with as an operator. Scaling state in particular can contain metadata, providing insights into exactly why a scaling activity took place. A simple UI is also available to provide an easy method of checking scaling activities.
-
The Sherpa binary can be downloaded from the GitHub releases page using
curl -L https://github.com/jrasell/sherpa/releases/download/v0.4.2/sherpa_0.4.2_linux_amd64 -o sherpa
-
A docker image can be found on Docker Hub, the latest version can be downloaded using
docker pull jrasell/sherpa
. -
Sherpa can be built from source by cloning the repository
git clone github.com/jrasell/sherpa.git
and then using themake build
command.
Please refer to the documentation directory for guides to help with deploying and using Sherpa in your Nomad setup.
Contributions to Sherpa are very welcome! Please reach out if you have any questions.
Thanks to everyone who has contributed to this project.
@jvineet @josegonzalez @pmcatominey @numiralofe @commarla @hobochili