Adapters

What are Meshery Adapters?

Part of Meshery’s extensibility as a platform, Meshery Adapters are purpopse-built to address an area in need of management that is either considered optional to the platform and/or is considered an area in which additional depth of control is needed. Adapters extend Meshery’s management capabilities in any number of ways, including lifecycle, configuration, performance, governance, identity and so on. Meshery Adapters come in different form factors, and depending on their purpose, deliver different sets or capabilities. Each Adapter registers its capabilities with Meshery Server. Meshery Server, in-turn, exposes those capabilities for you to control.

Meshery Adapters for Lifecycle Management

Adapters that extend Meshery’s lifecycle management capabilities for infrastructure do so, by offering an infrastructure-specific interface to increase the depth of control that Meshery has over a particular technology. Meshery uses adapters to offer choice of load generator (for performance management) and for managing different layers of your infrastructure. Lifecycle adapters allow Meshery to interface with the different cloud native infrastructure, exposing their differentiated value to users.

Meshery has lifecycle adapters for managing the following cloud native infrastructure.

Adapter StatusAdapterPortEarliest Version Supported
stableMeshery Adapter for Traefik Mesh Meshery Adapter for Traefik Mesh10006/gRPCv1.0
stableMeshery Adapter for NGINX Service Mesh Meshery Adapter for NGINX Service Mesh10010/gRPCv1.2.0
stableMeshery Adapter for Network Service Mesh Meshery Adapter for Network Service Mesh10004/gRPCv0.2.1
stableMeshery Adapter for Linkerd Meshery Adapter for Linkerd10001/gRPCv2.10.2
stableMeshery Adapter for Kuma Meshery Adapter for Kuma10007/gRPCv1.2.2
stableMeshery Adapter for Istio Meshery Adapter for Istio10000/gRPCv1.6.0
stableMeshery Adapter for Consul Meshery Adapter for Consul10002/gRPCv1.8.4
stableMeshery Adapter for Cilium Service Mesh Meshery Adapter for Cilium Service Mesh10012/gRPCv1.10.6
betaMeshery Adapter for App Mesh Meshery Adapter for App Mesh10005/gRPCv1.4.1
alphaMeshery Adapter for Tanzu Service Mesh Meshery Adapter for Tanzu Service Mesh10011/gRPCpre-GA
alphaMeshery Adapter for Nighthawk Meshery Adapter for Nighthawk10013/gRPCv0.7

Meshery Adapters for Performance Management

v0.8.0 Roadmap: The meshery-nighthawk adapter externalizes Nighthawk as an Meshery component.

Meshery Server allows users to generate traffic load tests using Nighthawk, fortio, and wrk2. Using the meshery-nigthhawk adapter, you can schedule, control, and execute performance tests.

Run the meshery-nighthawk adapter as an externalized load generator when you:

  1. Need a smaller sized container image for Meshery. Nighthawk binaries are dynamically linked (C++) and they need other dependencies to work. This causes bloat in Meshery Server’s image which doesn’t need them.
  2. Need adaptive load control of your performance tests, controlling the variability by which the system under test receives load. Use Meshery Server to run adaptive load tests.
  3. Need distributed load testing and the ability to horizontally scale Nighthawk, using Nighthawk’s execution forwarding service and results sink.

Adapter Deployment and Registration

Like every Meshery component, Meshery Adapters use MeshKit.

Adapter FAQs

Is each Meshery adapter made equal?

No, different Meshery adapters are written to expose the unique value of each cloud native infrastructure. Consequently, they are not equally capable just as each cloud native infrastructure is not equally capable as the other. Each Adapter has a set of operations which are grouped based on predefined operation types. See the extensibility page for more details on adapter operations.

How can I create a new adapter?

Yes, see the extensibility documentation for details how to create a new Meshery Adapter. See the Meshery Adapter Template repository as boilerplate for your new adapter.

Do adapters have to be written in Golang?

No. Adapters much interface with Meshery Server via gRPC. What language is used in that adapter is the prerogative of a given adapter’s maintainers.

Can I run more than one instance of the same Meshery adapter?

Yes. The default configuration of a Meshery deployment includes one instance of each of the Meshery adapters (that have reached a stable version status). You may choose to run multiple instances of the same type of Meshery adapter; e.g. two instances of the meshery-istio adapter. To do so, modify ~/.meshery/meshery.yaml to include multiple copies of the given adapter.

See the “Multiple Adapters” guide for more information.