The Nomad Autoscaler uses a plugin framework which allows users to extend its functionality. The design of the plugin system is inspired by the plugin system used in Nomad for task drivers and devices.
The following components are currently pluggable within the Nomad Autoscaler:
In addition, each plugin implements a base plugin functionality.
The Nomad Autoscaler plugin framework uses the go-plugin project to expose a language-independent plugin interface. Plugins implement a set of gRPC services and methods which the Autoscaler agent manages by running the plugin and calling the implemented RPCs. This means that plugins are free to be implemented in the author's language of choice.
To make plugin development easier, a set of Go interfaces and structs exist for
each plugin type that abstract the
go-plugin and gRPC interfaces. The guides in
this documentation reference these abstractions for ease of use.
The existing plugins can serve as examples; in addition, no-op external plugins are available in the autoscaler repo.