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 模式下运行:
在 HTTP 模式下,Maesh 使用 Traefik 的特性集实现在虚拟主机、路径、头信息和 cookie 上功能丰富的路由;
通过 TCP 模式,允许与 SNI 路由实现无缝和便利地集成。
在同一个集群中,可以同时使用这两个模式,这可以通过服务上的注解来进行配置。
构建在 Traefik 之上
Maesh 构建在 Traefik 之上,Traefik 是一个领先的用于路由的反向代理,它提供了用户期望的所有特性:OpenTracing、HTTP 的负载均衡、gRPC、WebSocket、TCP、丰富的路由规则、重试和恢复,它还具备访问控制、限速和断路器的功能。
易于安装,易于使用
往集群中安装 Maesh 非常容易:安装 Helm chart 就可以,没有辅助应用,没有要安装的 CRD,也没有要学习的新词汇。如果用户已经理解 pod 和服务是如何运行的,那么 Maesh 就会非常易于理解和使用。
首先,我们可以通过如下的命令安装 Maesh:
现在,Maesh 就已经在集群中就绪了,要在运行中的应用中使用 Maesh,我们只需要一个注解:
如果你的应用使用 TCP 连接协议,而不是 HTTP 的话,Maesh 也能支持:
安装和使用 Maesh 就是这么简单。
参考资料:
官方站点:https://mae.sh/
GitHub 地址:https://github.com/containous/maesh
社区论坛:https://community.containo.us/c/maesh
原文链接:
本文最初发表于 medium 博客,经原作者 Damien Duportal 和 Traefik 团队授权由 InfoQ 中文站翻译分享。
评论