服务网格:架构、概念和4大框架常用工具

了解服务网格模式的优缺点、服务网格的工作原理,并发现可用于通过Kubernetes实现服务网格的4种常用工具。

什么是服务网格?

服务网格提供了使应用程序更加安全、可靠和可观察的功能。这些功能是在平台层提供的,而不是应用层。

服务网格通常以sidecar模式实现为一系列网络代理,并使用应用程序代码来管理它们的行为。代理管理微服务之间的通信,并为引入服务网格功能提供入口点。总的来说,代理形成了服务网格的数据平面,该数据平面作为控制平面的可扩展单元进行控制。

由于云原生应用程序的广泛采用,服务网格越来越受欢迎。云原生应用程序可以包含数百个服务和数千个服务实例。这些实例通常由Kubernetes管理,在物理节点上动态调度,其状态不断变化。这使得服务到服务的通信变得极其复杂,并直接影响应用程序的运行时行为。

服务网格技术使得管理这种复杂的服务间通信成为可能,以确保可靠性、安全性和端到端性能。

服务网格

服务网格的优点和缺点

服务网格可以解决管理服务之间通信的一些主要挑战,但它们也有其缺点。服务网格的优点包括:

  • 对于容器和微服务来说,服务到服务的通信都得到了简化。
  • 通信错误更容易诊断,因为它们发生在自己的基础设施层内。
  • 您可以更快地开发、测试和部署应用程序。
  • 与容器集群一起放置的Sidecar可以有效地管理网络服务。
  • 服务网格支持各种安全功能,包括加密、身份验证和授权。


服务网格的一些缺点是:

  • 使用服务网格可以增加运行时实例。
  • 通信涉及一个额外的步骤——服务调用首先必须通过sidecar代理运行。
  • 服务网格不支持与其他系统或服务集成
  • 它们不解决诸如转换映射或路由类型之类的问题。
服务网格

服务网格架构和概念

服务网格的功能和组件有一个独特的术语:

  • 容器编排框架——服务网格架构通常与Kubernetes或Nomad等容器编排器一起运行。
  • Sidecar代理——它们与每个Pod或实例一起运行,并相互通信以在它们运行的​​容器之间路由流量。它们通过编排框架进行管理。
  • 服务和实例——实例(或Pod)正在运行微服务的副本。客户端通常通过服务访问实例,服务是实例的可扩展、容错副本。
  • 服务发现——实例需要发现它们需要与之交互的服务的可用实例。这通常涉及DNS查找。
  • 负载均衡——编排框架通常为传输层(第4层)提供负载均衡,但服务网格也可以为应用层(第7层)提供负载均衡。
  • 加密——服务网格可以加密请求和响应,然后解密它们。他们优先考虑重用已建立的连接,从而最大限度地减少创建新连接的需要并提高性能。通常,流量使用双向TLS进行加密,公钥基础设施生成密钥、证书以及sidecar代理使用的密钥。
  • 认证和授权。服务网格可以授权和验证应用程序外部和内部发出的请求,仅向实例发送经过验证的请求。
  • 断路器模式——这涉及隔离不健康的实例并在需要时将它们逐渐恢复。
  • 数据平面是服务网格的一部分,用于管理实例之间的网络流量。控制平面生成并部署控制数据平面的配置。它通常包括(或可以连接到)命令行界面、API和图形用户界面。
服务网格

服务网格的工作原理

服务网格不会向应用程序的运行时环境引入新功能。对于任何架构,应用程序都需要规则来定义请求的通信方式。服务网格的不同之处在于,它们将管理服务间通信的逻辑抽象到基础设施层(而不是单个服务)。

这是通过将服务网格作为一组网络代理构建到应用程序中来实现的。

代理通常用于从企业设备访问网站。通常,对网页的请求首先由公司的Web代理接收,该代理会检查这些请求是否存在安全问题,然后才将请求发送到主机服务器。来自页面的响应也会发送到代理进行安全检查,然后再返回给用户。

服务网格中的代理也称为边车,因为它们与微服务一起运行,而不是在微服务内部运行。它们在各自基础设施层的微服务之间路由请求。这些代理共同形成一个称为网格的网络。

如果您没有服务网格,则需要使用管理服务之间通信的逻辑对每个微服务需求进行编码。这不仅极大地浪费了您的时间,而且还使诊断通信故障变得更加困难,因为管理服务间通信的逻辑隐藏在服务内部。

零信任安全和服务网格

安全性是云原生应用程序的一个关键问题。许多组织正在采用零信任方法,这种方法特别适合云原生环境。零信任安全模型假设不存在网络边界。它不信任任何实体,即使它位于网络“内部”,并且需要对应用程序组件之间的任何通信以及外部通信进行持续的身份验证和验证。

以下是服务网格可以帮助实现零信任安全的几种方法:

  • 为所有微服务通信实施相互传输层安全(mTLS)
  • 管理微服务的身份和授权
  • 启用访问控制的集中管理并为每个微服务和角色强制执行最小权限(在Kubernetes中,这可以通过RBAC来完成)
  • 促进微服务的监控和可观察性,以确保可以识别和阻止可疑的访问尝试或流量
  • 添加对入口和出口的控制,并在每个微服务周围设置微边界

服务网格可以帮助减轻以下类型的攻击:

  • 服务模拟——攻击者冒充私有网络中的授权服务,并尝试访问其他服务或获取敏感数据的访问权限。
  • 数据包嗅探——攻击者渗透专用网络并拦截微服务之间的通信。
  • 未经授权的访问——粗心或恶意的内部人员尝试从合法服务向另一服务发出未经授权的请求。
  • 数据泄露——受保护网络内的攻击者将数据从受保护资源传输到网络外部的位置。

转载请注明出处:https://www.cloudnative-tech.com/uncategorized/6006.html

(0)
上一篇 2023年8月7日 下午6:48
下一篇 2023年6月19日 下午2:47

相关推荐

  • 云原生项目开发框架:哪些框架最适合您的业务需求?

    云原生项目的开发需要借助一些开发框架,这些框架可以帮助开发者提高开发效率、简化开发流程、降低开发成本。本文将介绍一些常用的云原生项目开发框架,包括Kubernetes、Spring Cloud、Service Mesh等,希望能够帮助开发者更好地理解和掌握云原生项目的开发。

    2023年7月12日
    0
  • Docker容器和镜像区别

    Docker是一种开源的容器化平台,用于创建、部署和管理应用程序的轻量级容器。在Docker中,有两个核心概念:容器(Container)和镜像(Image)。虽然容器和镜像在Docker中密切相关,但它们具有不同的概念和功能。下面将详细介绍Docker容器和镜像的区别。

    2023年7月13日
    0
  • K8s容器云平台搭建与应用场景

    本文介绍了k8s容器云平台的搭建和应用场景。在搭建k8s容器云平台时,需要准备服务器、网络设备、容器运行时、k8s二进制文件、etcd集群、网络插件和存储插件。在应用场景方面,k8s可以实现快速部署和扩展、弹性和高可用性的应用程序运行、多租户的应用程序管理、镜像和代码的管理和发布、云原生应用程序的开发和部署等功能。

    2023年5月30日
    0
  • 容器云和云的区别是什么?

    容器云和云计算都是云计算领域中的热门技术,但它们之间有一些明显的区别。本文将介绍容器云和云计算的概念和特点,并重点分析它们之间的区别。

    2023年5月24日
    0
  • 云原生架构的终极价值

    云原生计算是一种新兴的应用程序开发变革方法,使您能够利用云技术和创新来构建、操作和扩展应用程序。通过使用云原生技术架构,应用程序可以提高组织的敏捷性和运营效率,缩短新产品和服务的上市时间。

    2023年8月4日
    0