在这篇博客中,我们将介绍微服务的最佳服务网格工具列表,这些工具提供安全性、金丝雀部署、遥测、负载均衡等。
用于部署和操作微服务的服务网格工具的数量不断增加。在这篇文章中,我们将探讨您应该用来构建自己的服务网格架构的顶级服务网格工具。
在制定选择正确工具的策略时,首先要做的是了解它将为您提供什么以及它的效果如何。
注意:为了更好地理解服务网格,您应该了解微服务和 Kubernetes 或类似的容器编排工具。
什么是服务网格
在软件架构中,服务网格是一个专用的基础设施层,用于使用代理促进服务或微服务之间的服务到服务通信 -- wikipedia.org
如果要管理、监视和保护所有微服务之间的通信,该怎么办?这就是服务网格的用武之地。
服务网格是一种为微服务提供抽象层的工具。它们在服务之间提供智能路由、弹性和负载均衡功能,具有比传统解决方案更好的容错能力。
总体而言,服务网格管理所有服务到服务的通信。它拦截服务之间的所有流量。最好的部分是,您可以以声明方式管理所有服务网格功能,就像在 Kubernetes 中部署对象一样。
服务网格有什么用
服务网格本质上主要使用 sidecar 代理管理多个微服务之间的流量。
使用服务网格有很多好处,包括通过提供通信加密来提高安全性,通过可观测性工具简化调试过程,以及由于智能故障转移功能和跨容器或机器的分布式跟踪而实现的水平可扩展性而提高可用性。
服务网格旨在提供以下功能
- 路由和负载平衡
- 服务发现
- 身份验证和授权
- 金丝雀部署
- 熔断、限流、运行状况检查和重试预算
- 相互传输级别安全性 (mTLS) 和访问控制列表。
- 通过分布式跟踪实现可观测性
- 服务间通信访问日志
在大多数情况下,与应用程序容器一起运行的 sidecar 容器会处理上述所有功能。您不必专门设计应用程序来使用服务网格。此外,无需额外的仪器即可监控具有服务网格功能的服务。
最好的服务网格工具?
下面是一些流行的服务网格工具
1. Istio
Github | GitHub - istio/istio |
官网 | istio.io |
文档 | Istio Official Documentation |
Istio 是一个服务网格,由 Google 开发并开源的。它提供了一种连接、管理和保护相互通信的微服务的方法。
Istio 的安全功能包括加密传输中的服务之间的所有通信,以及为授权用户提供身份验证凭证。Istio 还提供跨容器或机器的分布式跟踪等功能,而无需在单个节点中使用第三方软件代理。
Istio 被 Adobe、百度和谷歌等许多公司用于生产。
2. Linkerd
Github | GitHub - linkerd/linkerd2 |
官方网站 | linkerd.io |
官方文档 | https://linkerd.io/2.10/overview/ |
Linkerd 是一个开源服务网格,可以在 Kubernetes 或 Mesos 集群上运行,专为管理大量微服务的大规模环境而设计。
Linkerd 还将提供监控、跟踪、路由、负载均衡和其他功能,以及跨集群的自动部署升级
3. Cilium Service Mesh
Github | https://github.com/cilium/cilium |
官方网站 | cilium.io |
文档 | https://docs.cilium.io/en/stable/ |
Cilium 是一种用于容器和微服务的开源轻量级网络和安全解决方案。它使用 Linux 内核的 BPF(Berkeley 数据包过滤器)技术为容器和微服务提供透明度、可见性和安全性。Cilium 提供了一种灵活的方法来容器化和微服务化应用程序,而无需绑定到任何特定的编排解决方案。
- 容器和微服务感知网络策略
- 自动发现服务
- L7(第 7 层)感知策略实施
- 容器和主机的统一安全模型
- 细粒度的安全可见性
- 容器和微服务之间的安全通信
- 无需中央控制器或管理开销
Cilium 是一种无需更改任何代码即可提高容器化应用程序安全性和网络的简单方法。Cilium 与 Docker、Kubernetes 和 Mesos 等流行的编排解决方案集成,可与任何基于 Linux 的应用程序一起使用。
如果您正在寻找一种轻量级、易于使用的解决方案来保护容器和微服务并联网,那么 Cilium 是您的正确选择。
4. Consul connect
Github | https://github.com/hashicorp/consul |
官方网站 | consul.io |
文档 | https://www.consul.io/docs/connect |
Consul Connect 是 Hashicorp 的服务网格解决方案。
Consul 最初是为服务发现而设计的。但是,通过 consul connect,服务网格部署在 consul 之上,并提供服务发现、配置同步和故障检测。
5. Traefik Mesh
Github | https://github.com/traefik/mesh |
官方网站 | traefik.io |
文档 | https://doc.traefik.io/traefik-mesh/ |
Traefik Mesh 是一个简单的服务网格解决方案,主要用于负载均衡。
Traefik Mesh 是流行的反向代理 Traefik 的插件,可帮助发现服务并在服务之间路由以平衡工作负载。
它还提供 SSL 终止和 Web 套接字代理等功能,因此您不必担心这些事情,如果它们
6. Open Service Mesh (OSM)
Github的 | OSM 存储库 |
官方网站 | openservicemesh.io |
学习 | OSM 官方文档 |
Open Service Mesh (OSM) 是一种轻量级且可扩展的云原生服务网格,支持动态服务发现、监控和路由。
OSM在所有级别上都是可插拔的,以提供最适合您要求的产品:
- 服务发现 – 第四层 (IP) 或第七层 (URL)
- 监控 – 基于 Prometheus 的指标,后端支持 Graphite、InfluxDB 和 Elasticsearch
- 路由 – HAProxy 作为服务之间的代理,通过集群中 Pod 之间的请求负载均衡来提供高可用性。它还提供 SSL 终止和 Web 套接字代理等功能,因此如果它们运行在不安全的协议(例如明文 TCP/UDP 连接)上,您不必担心这些事情。这有助于通过仅允许来自授权 IP 的流量通过服务网格来确保访问控制。
7. Nginx Service Mesh (NSM)
Nginx 服务网格是用于 kubernetes 的轻量级服务网格,具有零信任环境,可在容器之间提供加密流量。
它使用由 Nginx Plus 提供支持的数据平面管理容器之间的数据流量。Nginx 服务网格主要关注以下几点。
- 安全性:服务之间的 mTLS 加密流量。
- 流量管理:具有速率限制和断路器的服务之间的策略管理流量控制。
- 可视化:内置的 Grafana 仪表板提供了对 NGINX 和指标的可见性。
- 混合部署:遗留应用程序可以通过 Nginx 入口控制器与服务网格进行社区化。
8. Kuma
Github的 | Kuma 开源存储库 |
官方网站 | kuma.io |
学习 | Kuma 官方文档 |
Kuma 服务网格最初由 Kong, Inc 创建,现在是 CNCF 沙盒项目。它建立在 Envoy 代理之上。它可以充当 kubernetes 集群和 VM 的服务网格。
以下是隈研吾的主要特点
- 通用控制平面
- 轻量级数据平面
- 多网格
- mTLS 和 TLS 轮换
- 故障注入
- 流量跟踪和流量指标
- 与平台无关
- 透明代理
其他要考虑的 Service Mesh 工具
以下是其他基于 CNCF 的服务网格工具。
- 网状物
- Gloo 网状物
- 灰质
- 服务网格接口
- 网络服务网格
以下是一些云托管的服务网格服务。
- AWS 应用网格
- Anthos 服务网格
- GitHub - linkerd/linkerd2
总结
做出选择时,首先要深入研究服务网格功能。您应该能够使用 Service Mesh 工具提供的功能来调整组织的需求。
其次,确定您是否拥有具有实施和管理该工具的技能组合的团队。初始设置总是很容易,真正的麻烦在于其生命周期管理。