Advantages of a service mesh, done simply

Looking for a service mesh? A service mesh can help coordinate and monitor data and microservices communications across applications. Maesh is built on top of Traefik, an open source cloud-native edge router also known for its simplicity-by-design. This article explores its architecture, how it works, and how to install it.

For developers building modern cloud-native applications, leveraging a service mesh to coordinate and monitor data and microservices communications across applications is a big deal when done successfully. However, developers are often coming face to face with several challenging obstacles to service mesh adoption – from lengthy implementations and rather deep complexity, to heavily-intrusive architectures requiring sidecar containers and invasive modifications.

Created specifically to alleviate these challenges, Maesh is a brand-new open source service mesh designed to deliver the advantages of a service mesh while eliminating the complexity inherent to similar infrastructure layers. Maesh is designed to install easily and can be put into use within minutes. It’s built with a lightweight simplicity that lets developers connect, secure, and monitor traffic within their microservices-based application environments, without the need to overcome a daunting learning curve and steep overheads.

For so many of today’s businesses, containerization and the benefits of microservices are now at the core of application development. At the same time, service meshes are becoming equally essential for managing network communication among services in the face of their increasing complexity – such that developers consider service meshes a crucial addition to any microservices environment. With its simpler service mesh experience, Maesh helps drive greater microservices adoption by making it possible for developers to easily improve application performance while visualizing traffic patterns, optimizing internal traffic, and securing communication within any Kubernetes environment.

SEE ALSO: Extending CI/CD: Kubernetes Continuous Deployment for Microservices

Maesh is built on top of Traefik, an open source cloud-native edge router also known for its simplicity-by-design. Maesh is container-native and compliant with the latest Service Mesh Interface specification, ensuring its interoperability with pre-existing solutions in Kubernetes.

Non-invasive by design

Maesh’s mesh controller runs in a dedicated Kubernetes pod, directly handling all configuration parsing and routing of communication through proxy endpoints that run on each node. In this way, Maesh avoids the need for sidecar containers, or making any modifications to Kubernetes objects; the Maesh endpoints (used in place of standard Kubernetes service endpoints) are directly accessible. Maesh also supports both annotations on user service objects and SMI objects as configuration options.

Maesh utilizes CoreDNS (), the DNS platform that is installed and available within Kubernetes by default. All updates made to CoreDNS during Maesh installation are small, non-invasive, and simple to remove.

In leveraging CoreDNS, Maesh endpoints are able to run in parallel with existing user services, giving developers the choice to opt-in and add services to the mesh as they wish, while withholding others as preferred. In the same way, developers can easily test out services on the Maesh service mesh, and revert them to user services if necessary.

Feature set

Built on top of Traefik, Maesh offers key features for development and application management within any Kubernetes environment. These include:

Observability – Maesh offers OpenTracing and informative metrics for understanding application behavior and performance.

– Maesh offers OpenTracing and informative metrics for understanding application behavior and performance. Multi-Protocol Support – Maesh can run in TCP and HTTP mode simultaneously, within the same cluster. These modes are configurable by making annotations on services. HTTP mode allows Maesh to enable rich routing for virtual hosts, paths, headers, and cookies. TCP mode enables simple and seamless SNI routing support integration.

– Maesh can run in TCP and HTTP mode simultaneously, within the same cluster. These modes are configurable by making annotations on services. Traffic Management – Maesh offers load balancing, retries and fail-overs, circuit breakers, and rate limits.

– Maesh offers load balancing, retries and fail-overs, circuit breakers, and rate limits. Security and Safety – In addition to the security advantages of gaining easy visibility into microservices traffic, Maesh provides fully-secure access controls.

How to install Maesh

Maesh is simple to get started with – no extra applications or CRD installations are necessary, nor is there any specialized terminology to learn. Any developer with an understanding of Kubernetes pods and services will find working with Maesh to be straightforward.

SEE ALSO: Microservices to the rescue: Can we really bring microservices to QA and test automation?

To install Maesh, simply install the helm chart using these commands:

{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf600 {\fonttbl\f0\froman\fcharset0 TimesNewRomanPSMT;} {\colortbl;\red255\green255\blue255;\red5\green99\blue193;} {\*\expandedcolortbl;;\csgenericrgb\c1961\c38824\c75686;} \margl1440\margr1440\vieww10800\viewh8400\viewkind0 \deftab720 \pard\pardeftab720\ri0\sl276\slmult1\partightenfactor0 \f0\fs24 \cf0 Listing 1\ \ $ helm repo add maesh {\field{\*\fldinst{HYPERLINK "https://containous.github.io/maesh/charts%22%20%5Ct%20%22_blank"}}{\fldrslt \cf2 \ul \ulc2 https://containous.github.io/maesh/charts}}\uc0\u8232 $ helm repo update\u8232 $ helm install --name=maesh --namespace=maesh maesh/maesh\ \ \

Maesh is now prepared for use in your cluster. To use it on any running application, just add the following annotation:

\ $ kubectl annotate service \\\uc0\u8232 web-application maesh.containo.us/traffic-type=http\ \ \

Alternatively, if your application uses a non-HTTP TCP communication protocol, use this annotation:

\ $ kubectl annotate service mongo-database \\\uc0\u8232 maesh.containo.us/traffic-type=tcp\ }

And that’s it – with these quick and simple commands, Maesh is installed and in active use.

Capable visibility, management, and security over internal Kubernetes cluster traffic are every bit as important as it is with external traffic. With Maesh, developers can quickly and easily achieve those required capabilities, while also gaining the freedom and peace of mind to focus their resources and efforts on the actual application development they do best.