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