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 Status Adapter Port Earliest Version supported
stable Meshery Adapter for Traefik Mesh 10006/gRPC v1.0
stable Meshery Adapter for Open Service Mesh 10009/gRPC v0.9.2
stable Meshery Adapter for Network Service Mesh 10004/gRPC v0.2.1
stable Meshery Adapter for NGINX Service Mesh 10010/gRPC v1.2.0
stable Meshery Adapter for Linkerd 10001/gRPC v2.10.2
stable Meshery Adapter for Kuma 10007/gRPC v1.2.2
stable Meshery Adapter for Istio 10000/gRPC v1.6.0
stable Meshery Adapter for Consul 10002/gRPC v1.8.4
stable Meshery Adapter for Cilium Service Mesh 10012/gRPC v1.10.6
beta Meshery Adapter for App Mesh 10005/gRPC v1.4.1
alpha Meshery Adapter for Tanzu Service Mesh 10011/gRPC pre-GA

Meshery Adapters for Performance Management

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

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

Run the meshery-perf 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 perogative 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.