[关闭]
@levinzhang 2019-11-07T21:48:58.000000Z 字数 1696 阅读 735

Traefik团队开源的轻量级服务网格Maesh简介

摘要

Traefik团队开源了轻量级和简化的服务网格Maesh。Maesh构建在Traefik之上,是简单、功能完备的服务网格。它支持最新的服务网格接口规范(SMI),有助于与已存在的解决方案集成。


本文最初发表于medium博客,经原作者Damien Duportal和Traefik团队授权由InfoQ中文站翻译分享。

Containous发布了全新的服务网格Maesh,Maesh是从头开始重新设计的,易于安装和使用。Maesh允许对Kubernetes集群内部的流量进行可视化和管理,这种流量与ingress和egress流量同等重要。

Maesh构建在Traefik之上,是一个简单却功能齐全的服务网格。它是容器原生的,适合作为Kubernetes集群中的实际服务网格。它支持最新的Service Mesh接口规范(Service Mesh Interface,SMI),借助该规范,我们能够更容易地与现有解决方案集成。此外,默认情况下,Maesh是可选的,这意味着在决定将现有服务添加到网格中之前,它们不会受到任何影响。

非侵入式服务网格

Maesh并没有使用sidecar容器,而是通过运行在每个节点上的代理端点来处理路由。网格控制器运行在一个专门的容器中,会处理所有的配置解析以及到代理节点上的deployment。Maesh支持多种配置选项:用户服务对象的注解和SMI对象。不使用sidecar就意味着Maesh不会修改Kubernetes对象,也不会在你不知情的情况下修改你的流量。只需使用Maesh端点就满足所有需求了。

依赖Kubernetes DNS

Maesh利用了Kubernetes默认安装的CoreDNS平台。它允许用户使用Maesh端点(而不是标准的Kubernetes服务端点)。Maesh端点会与用户服务一起运行:你可以自行决定是否要使用它们(可选的)。这会给用户带来更多的自信,因为用户知道他们能够测试和恢复至用户服务。

另外,CoreDNS的更新使得Maesh的安全达到了最小化和无侵入,并且能够很容易移除。

多个网络层

Maesh可以在TCP和HTTP模式下运行:

在同一个集群中,可以同时使用这两个模式,这可以通过服务上的注解来进行配置。

构建在Traefik之上

Maesh构建在Traefik之上,Traefik是一个领先的用于路由的反向代理,它提供了用户期望的所有特性:OpenTracing、HTTP的负载均衡、gRPC、WebSocket、TCP、丰富的路由规则、重试和恢复,它还具备访问控制、限速和断路器的功能。

易于安装易于使用

往集群中安装Maesh非常容易:安装Helm chart就可以,没有辅助应用,没有要安装的CRD,也没有要学习的新词汇。如果用户已经理解pod和服务是如何运行的,那么Maesh就会非常易于理解和使用。

首先,我们可以通过如下的命令安装Maesh:

  1. $ helm repo add maesh https://containous.github.io/maesh/charts
  2. $ helm repo update
  3. $ helm install --name=maesh --namespace=maesh maesh/maesh

现在,Maesh就已经在集群中就绪了,要在运行中的应用中使用Maesh,我们只需要一个注解:

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

如果你的应用使用TCP连接协议,而不是HTTP的话,Maesh也能支持:

  1. $ kubectl annotate service mongo-database \
  2. maesh.containo.us/traffic-type=tcp

安装和使用Maesh就是这么简单。

参考资料

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注