We're pleased to announce the release of Meshery 0.5.0! Consisting of a number of significant architectural enhancements with 8 new capabilities entering alpha, Meshery v0.5.0's feature density is impressive. Previewed in the Using Istio workshop delivered at the inaugural IstioCon 2021 earlier this month, Meshery v0.5.0 provides a strong architectural foundation for cloud native application and service mesh management.
Feature Highlights
- New GraphQL API
- Meshery Operator with MeshSync inside
- Meshery Adapter for Traefik Mesh (beta)
- MeshKit and the Meshery Adapter Library
- Meshery Adapter for NGINX Service Mesh (alpha)
- Meshery Remote Provider extensions with dynamic injection
- New Meshery CLI commands to manage mutiple Meshery deployments
Thank you to the wonderful Layer5 community of open source contributors in making this significant release possible.
New Service Mesh Support
2 new Meshery service mesh adapters are bundled with this latest version of Meshery: The Meshery Adapter for Traefik Mesh and the Meshery Adapter for NGINX Service Mesh.
Meshery Adapter for Traefik Mesh (beta)
Traefik Mesh is a straight-forward, easy to configure, and non-invasive service mesh that allows visibility and management of the traffic flows inside any Kubernetes cluster.
Meshery supports the lifecycle and performance management of Traefik Mesh. Along with support for multiple versions of Traefik Mesh, bundled with this adapter are the Book Info and HttpBin sample applications operations to aid you in familiarizing with the functionality of Traefik Mesh. As a Meshery user, you can apply custom configuration to your instances of Traefik Mesh, managing the onboarding of your own applications onto the service mesh and providing the ability for you as a service mesh manager to customize your service mesh deployment.
Review the sample application guides to familiarize with their differences and learn more about the beta adapter for Meshery Adapter for Traefik Mesh.
Meshery Adapter for NGINX Service Mesh (alpha)
NGINX Service Mesh (NSM) is a fully integrated, lightweight service mesh that leverages a data plane powered by NGINX Plus to manage container traffic in Kubernetes environments.
Meshery supports lifecycle and performance management of NGINX Service Mesh. Bundled with this support are a few sample applications to help users understand the functionality of NGINX Service Mesh. lifecycle management and sample applications operations below:
- Book Info
- HTTPBin
- Emojivoto
Review the sample application guides to familiarize with their differences. Learn more about the alpha adapter for Meshery Adapter for NGINX Service Mesh.
Integrating with Meshery: Using extension points
As the cloud native manager, Meshery, is an extensible platform offering user and integrators well-crafted, extension points. Extension points allow you to augment the behavior of Meshery by either adding entirely new capabilities or affecting the behavior of existing functionality, as see in the figure below.
As you can see in the diagram, Meshery offers many types of extension points.
- Extensible Service Mesh Adapters - bring your own service mesh.
- Extensible APIs - bring your own GraphQL resolvers and expose new, custom endpoints.
- Extensible Load Generators - Meshery supports three types of load generators, however, you can bring your own and plug it in.
- Extensible Providers - the v0.5.0 release delivers dynamic injection of Remote Provider extensions. Providers are a powerful mechanism for integrating Meshery into your existing tooling and systems.
There are two types of Providers in Meshery: Local - built into Meshery and Remote - implemented by anyone or any organization that wishes to integrate with Meshery. Remote Provider extensibility includes:
- Pluggable UI functionality
- Pluggable Backend functionality
- Pluggable Authentication and Authorization
- Long-Term Persistence
- Enhanced Visualization
- Historical Reporting
Learn more about the platform Meshery provides to extend its funcionality by exploring its extension points. If you have or are building your own Remote Provider, let us know!
MeshKit and Meshery Adapter Library
As a service mesh toolkit, MeshKit aims to specifically focus on service mesh management and provides broadly useful functionality, it provides a standard policy for error handling and logging across all Meshery components, and implementations for error handling, logging, and tracing.
- MeshKit provides common data models of Service Mesh Interface conformance testing for Meshery.
- The low-level API abstract by MeshKit to the high-level functions provides out-of-the-box functions.
Meshery Adapter Library
The Meshery Adapter Library provides a common and consistent set of functionality for managing the lifecycle of service meshes and their workloads.
- The library provides a set of interfaces, some with default implementations like a mini framework implementing the gRPC server that allows plugging in the mesh-specific configuration and operations implemented in the adapters.
- The default configuration provider we use Viper to reads the adapter specific configuration, and the configuration providers are implementations of an interface, this can be flexible if anyone wants to implement it on their own.
Read Maintainer Michael Gfeller's blog post Introduction MeshKit and the Meshery Adapter Library for more details.
With the increasing the number and diversity of service meshes supported by Meshery, you might find the list of Supported Service Meshes a helpful, complete list.
Meshery Operator
As a Kubernetes custom controller, Meshery Operator provides a Kubernetes-native approach to interfacing with Meshery. Kubernetes is where service meshes have gotten their initial foothold, and therefore, important that Meshery interface to Kubernetes natively.
Some service meshes support non-containerized workloads outside of the cluster and will grow in this focus over time. While Meshery Operator is Kubernetes only in the v0.5.0 release, Meshery's arichitecture makes considerations for different workload and platform types.
- Meshery Operator is the multi-service mesh operator that runs as a Kubernetes Operator and defines two custom resources: MeshSync and Meshery Broker (NATS)
- Meshery Operator is provides abilities includes cluster discovery, service mesh discovery, and data streaming via NATS.
MeshSync
MeshSync is available as a Kubernetes custom resource that provides tiered discovery and continual synchronization with Meshery Server as to the state of the Kubernetes cluster, service meshes, and their workloads.
- MeshSync is one of a family of custom controllers within Meshery Operator and is the heartbeat of Meshery, pumping information about service meshes and their workloads throughout Meshery's components.
- MeshSync helps Meshery mesh with meshes by helping define a service mesh agnostic object model.
- It provides ability to detect service meshes and services deployed on the cluster, and snapshot stored in-memory and refreshed periodically; maintain the local snapshot of the cluster and refreshed periodically.
- MeshSync These abilities above help Meshery operations more resilient.
Relational Database
Meshery's relational database serves as a repository for MeshSync data, user preferences, and system settings. This database should be considered ephemeral and given that it operates as a cache. Meshery relational database offers federated datasets for managing multiple Kubernetes cluster and multiple service meshes.
Learn more and consider contributing to MeshSync.
GraphQL Support
Meshery now supports GraphQL instances between Meshery UI and Meshery Server offering any GraphQL client the power to ask for exactly what they need from mesh. This new API sets the stage preparing for exciting features in upcoming releases. Extension points are also built into Meshery's GraphQL support allowing integrators to bring their own GraphQL resolvers to the Meshery server runtime.
Meshery Command Line Interface Enhancements
The beloved `mesheryctl` introduces new commands in the v0.5.0 release expands the CLI's support of multiple Meshery deployments with the `context` command and control over when Meshery auto-updates with the `channel` command.Managing Multiple Meshery Deployments
Introduced in this release is the meshconfig - a configuration file that describes Meshery deployments in separate contexts. A Meshery context describes deployments across Docker hosts and Kubernetes clusters.mesheryctl system context
enables user to easy manage multiple deployments of Meshery by quickly switching contexts.Subscribing to Meshery Release Channels
mesheryctl system channel
allows you to easily set and switch between which Meshery release channel (stable or edge) that you want a particilar Meshery deployment (context
) to use. Meshery deployments subscribe to one of two release channels and can either automatically self-update the deployment or prompt you to update the deployment. Alternatively, you can pin a given Meshery deployment to a specific release should you want tighter control over when Meshery updates. Read more about Meshery's stable and edge release channels.
Review the mesheryctl Command Reference for details on all subcommands, flags, and their behavior.
On to v0.6.0
To get a more comprehensive list of the bug fixes and enhancements packaged in the v0.5.0 release, see the Meshery Documentation. With v0.6.0 planning complete these signal of the Layer5 community's innovation cycle trending upward sharply. See Meshery's roadmap for a prelude of what's yet to come.
If these topics excite you and you want to explore the wonderful world of service meshes, come and say "Hi" on the community Slack and you are sure to be warmly welcomed. 😀