Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Service mesh and Async services

I am planning to introduce K8s/Istio into my infra. Right now I have plenty of services which communicate with each other using RabbitMQ.

Service mesh concept seems to assume all services should be synchronous.

I'd like to keep at least some of my services async and take advantage of Mutual TLS Authentication which istio provides and also aggregated monitoring.

Is there any tools/methods which can help me to streamline management of both Sync and Async services?

Thanks,

like image 547
arkadiy kraportov Avatar asked Apr 16 '18 23:04

arkadiy kraportov


People also ask

What does service mesh do?

A service mesh is a dedicated infrastructure layer that controls service-to-service communication over a network. This method enables separate parts of an application to communicate with each other. Service meshes appear commonly in concert with cloud-based applications, containers and microservices.

What are different types of service mesh?

Popular service meshes include: Linkerd, Istio, Consul, Kuma, and Maesh. Supporting technologies within this space include: Layer 7-aware proxies, such as Envoy, HAProxy, NGINX, and MOSN; and service mesh orchestration, visualization, and understandability tooling, such as SuperGloo, Kiali, and Dive.

Is service mesh necessary in microservices?

Conclusion. Service mesh is not an optional feature for consideration for organizations using a microservice architecture. It provides critical observability, reliability, and security features. As this runs on a platform level, it is not a burden on the core business application.

What is service mesh in Kubernetes?

A Kubernetes service mesh is a tool that inserts security, observability, and reliability features to applications at the platform layer instead of the application layer. Service mesh technology predates Kubernetes.

How does a service mesh work with your application?

Your application is decoupled from these operational capabilities and the service mesh moves them out of the application layer, and down to the infrastructure layer. These are some of the scenarios that can be enabled for your workloads when you use a service mesh:

How do proxies work in a mesh?

All requests to or from a service pass through two proxies within the mesh: the proxy for the calling service and the proxy for the receiving service. This architecture abstracts all functions that are not related to the business logic away from services and service developers. The data plane manages the proxies and services.

How do I enable correct service mesh communications?

There are several ways to enable correct service mesh communications. One way is to identify callers by their identifying service name and list them individually to specify the permitted callers for a service. Another way is to use labels as identifiers instead of service names.

Do service meshes support event-driven or messaging based communication?

For the advancement and adoption of service meshes, we believe that it is critical that they support event-driven or messaging-based communication


2 Answers

Please note that Istio can control non-HTTP protocols on top of TCP, including providing Mutual TLS Authentication. See this example of mTLS for HTTPS (treated as opaque TCP) - https://preliminary.istio.io/docs/tasks/security/https-overlay.html.

I am not familiar with AMQP, but since it is a protocol on top TCP, it should be possible to control it by Istio as opaque TCP.

like image 136
Vadim Eisenberg Avatar answered Nov 14 '22 05:11

Vadim Eisenberg


Apparently there is WIP to add Async (Event driven) messaging to Envoy Proxy through Kafka filter: https://github.com/envoyproxy/envoy/issues/2852

Also good summary on using a Service Mesh for Event-Driven Messaging here: https://www.infoq.com/articles/service-mesh-event-driven-messaging

like image 32
arkadiy kraportov Avatar answered Nov 14 '22 04:11

arkadiy kraportov