github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/website/content/tools/autoscaling/concepts/plugins/index.mdx (about) 1 --- 2 layout: docs 3 page_title: Plugins 4 description: Learn about how external plugins work in the Nomad Autoscaler. 5 --- 6 7 # Plugins 8 9 The Nomad Autoscaler uses a plugin framework which allows users to extend its 10 functionality. The design of the plugin system is inspired by the 11 [plugin system][nomad_plugin_system] used in Nomad for task drivers and 12 devices. 13 14 The following components are currently pluggable within the Nomad Autoscaler: 15 16 - [APMs](/tools/autoscaling/internals/plugins/apm) 17 - [Strategies](/tools/autoscaling/internals/plugins/strategy) 18 - [Targets](/tools/autoscaling/internals/plugins/target) 19 20 In addition, each plugin implements a [base](/tools/autoscaling/internals/plugins/base) 21 plugin functionality. 22 23 # Architecture 24 25 The Nomad Autoscaler plugin framework uses the [go-plugin][goplugin] project to expose 26 a language-independent plugin interface. Plugins implement a set of gRPC 27 services and methods which the Autoscaler agent manages by running the plugin 28 and calling the implemented RPCs. This means that plugins are free to be 29 implemented in the author's language of choice. 30 31 To make plugin development easier, a set of Go interfaces and structs exist for 32 each plugin type that abstract the `go-plugin` and gRPC interfaces. The guides in 33 this documentation reference these abstractions for ease of use. 34 35 The existing plugins can serve as examples; in addition, no-op external plugins 36 are available in the [autoscaler repo][noop_plugins]. 37 38 [goplugin]: https://github.com/hashicorp/go-plugin 39 [nomad_plugin_system]: /docs/concepts/plugins 40 [noop_plugins]: https://github.com/hashicorp/nomad-autoscaler/tree/main/plugins/test