根据 The New Stack 的定义,service mesh 是一种旨在“提高分布式系统的安全性、可观测性及流量控制”的技术。更具体地说,service mesh 是一种像 Kubernetes 这样的容器化环境编排工具的组件。它通常负责一系列功能,包括在容器化应用之间路由流量,用作定义自动的 service 到 service 的双向 TLS (mTLS) 策略和实施这些策略的接口,并让应用的可用性和安全性变得可视化。与 Kubernetes 的整体状况一样,service mesh 也是由控制平面、管理平面及数据平面组成。
Service mesh 通常以一种对容器化应用透明的方式处理流量管理和安全防护。通过 SSL/TLS 卸载、负载均衡等功能,service mesh 能够使开发人员无需在每个应用中都单独实现安全性或服务可用性。企业级的 service mesh 为各种“难题”提供了解决方案:
- 使用端到端加密和 mTLS 保护流量
- 通过注入管理、sidecar 管理及 Kubernetes API 集成进行编排
- 管理服务流量,包括负载均衡、流量控制(速率限制和断路)及流量整形(灰度部署、A/B 测试、蓝绿部署)
- 使用 Prometheus 和 Grafana 等热门工具增强对 service 到 service 流量的监控和可视化
- 通过原生集成的 Ingress controller(Ingress 控制器),简化 Kubernetes 出入向流量管理
Service mesh 可以很小,专注于某项特定功能;它也可以很大,包含一套全面的网络和集群管理工具(例如 Istio);它也可以是介于两者之间的任何形态。Service mesh 越大越复杂,独立的管理平面就越有用。
您做好使用 service mesh 的准备了吗?
尽管在被托管的集群中,service mesh 是用于应用流量管理的强大工具,但它并不能成为 Kubernetes 的全部。与任何其他工具一样,service mesh 需要各种开销:用户培训、新的管理要求、集成至现有 CI/CD 流水线等。在开始使用 service mesh 之前,必须确定您当前的和计划中的哪些用例可能会从中获益。
如需确定您是否做好使用网格的准备以及如何执行后续步骤,请参阅我们的博文《如何选择 Service Mesh》:
- 用于确定准备情况的 6 点清单
- 选择适合您的网格的 3 步流程
- NGINX Service Mesh 概述
NGINX 如何助一臂之力?
当您确定您需要使用 service mesh 时,决定选择哪种网格取决于您的用例。您可以这样思考一下:“我希望网格管理些什么?”
- 如果答案是应用流量管理、安全及治理,请选择注重数据平面而非控制平面的网格,例如 NGINX Service Mesh。它十分轻量但功能全面,可利用 NGINX Plus 为 Kubernetes 环境提供企业级流量管理和安全工具。
- 如果答案是 Kubernetes 集群和网络管理,则您倾向于特性更丰富的网格,例如 Istio 与 F5 Aspen Mesh 作为独立的管理平面。