17

再添一员!Traefik 团队开源了轻量级服务网格 Maesh

 5 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzIzNjUxMzk2NQ%3D%3D&%3Bmid=2247492235&%3Bidx=1&%3Bsn=875a491a8d9b679ff173bf3ed5c7530b
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

VvqqYbJ.jpg!web

作者 | Damien Duportal

译者 | 张卫滨

本文最初发表于 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 模式下运行:

在 HTTP 模式下,Maesh 使用 Traefik 的特性集实现在虚拟主机、路径、头信息和 cookie 上功能丰富的路由;通过 TCP 模式,允许与 SNI 路由实现无缝和便利地集成。在同一个集群中,可以同时使用这两个模式,这可以通过服务上的注解来进行配置。

构建在 Traefik 之上

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

易于安装,易于使用

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

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

$ helm repo add maesh https://containous.github.io/maesh/charts

$ helm repo update

$ helm install --name=maesh --namespace=maesh maesh/maesh

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

$ kubectl annotate service \

web-application maesh.containo.us/traffic-type=http

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

$ kubectl annotate service mongo-database \

maesh.containo.us/traffic-type=tcp

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

参考资料

官方站点:

https://mae.sh/

文档:

https://docs.mae.sh/

GitHub 地址:

https://github.com/containous/maesh

社区论坛:

https://community.containo.us/c/maesh

活动推荐

又到年末,运维工程师如何选择职业发展道路?如何判断哪些技术技能才是企业重点关注?运维工程师的价值和成长路径是什么?

极客时间汇集100+一线技术专家分享最佳实践,为你整理了从Kubernetes到Nginx、持续交付到运维体系管理的干货课程,带你解读从运维小工到专家的实战心法,高效解决80%的开发难题。点击「 阅读原文 」,了解技术团队学习方案

rqmmi2I.jpg!web


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK