当前位置: 首页 > 网络应用技术

服务网格主流产品ISTIO进入理论

时间:2023-03-06 13:01:04 网络应用技术

  官方定义:这是一个完整的开源服务网格,它连接到现有的分布式应用程序作为透明层。它也是一个可以与任何日志,遥测和策略系统集成的平台。iStio的多元化特征允许您使用成功有效地运行微服务体系结构,并提供一种统一的保护,连接和监视微服务的方法。

  根据官方定义,提取一些核心要点:

  ISTIO是由Google,IBM和Lyft共同启动的开源微服务服务网格框架。ISTIO具有一个重要的功能,即将其称为第二代服务网格。基于原始数据平面,控制平面已添加到原始数据平面中,并且控制平面Hasodern Service网格产品定义了一种新形式。

  Istio具有两个主要优势:

  实际上,ISTIO的核心功能是服务内存的核心功能。有四个主要方面

  ISTIO的出现实际上重新定义了微服务的开发方法,因此您可以轻松地将服务网格技术植入微服务架构中。第三点使用统一的操作,维护和开发方法来简化微服务的开发过程。

  对于Google和IBM而言,ISTIO是一种战略产品。从这张图片中,您可以看到Google在容器级别具有Kubernetes。在Communication Leveluse Istio占据市场,这三个方面构成了Google的云本地策略。

  此版本的架构包括两个部分

  由于版本1.0混音器组件的两个问题,ISTIO发布了1.1版。

  此版本的体系结构的主题是脱钩,已经进行了两个更改:

  第一个问题是性能。1.1版本体系结构已重组混音器组件,原始插件模型被分为独立的过程 - 运行适配器。SideCar代理已经多次通信,目前,您需要再次与这些适配器进行交互,并且性能只会变得更糟。

  第二个问题是易用性不好。这些组件必须单独部署,并且都有自己的过程。

  版本1.5的最重要点是重建控制平面,原始组件的整个组件是一个称为ISTIOD的单个模型。

  从这个图中,您可以看到ISTIO体系结构比以前要简单得多。当然,除了减法外,此版本还添加了一些新功能来修复错误并提高性能。

  顾名思义,流量控制,控制和管理流量请求。ISTIO提供的交通控制能力非常强大。除了最基本的服务发现和负载平衡外,还有以下四个功能:

  ISTIO的流量控制功能主要由“虚拟服务,目标规则,网关,服务入口,Sidecar”等资源实现。

  虚拟服务虚拟服务是路由功能的重要组成部分。它的主要功能是将请求流量路由设置为指定的目标地址。它可以解除请求地址和实际工作负载。它实际上是一组路由规则。

  这张图显示了虚拟服务。它定义了两个不同的路由规则。规则1将把请求指向目标地址a,规则2将指向目标地址B。虚拟服务通常将与目标规则配对。作为匹配端点,对于URL,以及类似标头的不同粒径的路由。

  目标规则的目标规则定义虚拟服务中配置的特定目标地址。在其配置中,它以子集的形式存在,即,每个子集将配置相应的目标地址。

  上图的上部是虚拟服务,并且在下面的虚拟框架中表示特定的目标规则。两个子集(A1,A2)在目标地址A中定义了两个子集,而其他两个子集(B1,B2)定义在目标地址B中定义。在定义这些子集的其他定义子集中,它也可以修改负载平衡策略。默认情况下,负载平衡是通过旋转进行的。可以将其配置为使用随机,重量,最小请求等以实现负载余额。

  网关虚拟服务和目标地址的两个组件主要用于管理网格的内部流量,并且网关用于管理网格以外的流量。iStio中定义的网关位于整个网格的边界上,以管理访问网格的流量。上图中有两个网关。其中,负责管理流量的网关称为入口(左),管理出口的网关为出口(右)。出口网关不是必须-have.external服务。

  为什么要使用网关?我们可以使用网关来管理电网流量,例如增加负载平衡并增加重试流量超时的能力。

  两个网关在ISTIO内是预定义的,即入口网关和出口网关。您还可以自己实现自定义网关。

  服务入口(服务条目)服务入口与以前的资源不同。先前的资源主要面临流量。该资源正面临服务,其主要功能是将外部服务注册到网格中。这样,您可以管理像网格中的服务这样的外部服务。

  有三个主要功能:

  例如,假设您的服务部署在不同的群集中,然后您可以通过定义服务条目来集中这些不同的群集,并使用相同的网格一起管理

  Sidecar Sidecar与以前的资源不同。Sidecar是对流量的全球控制,前几个资源主要是为了进行一些精细的微型控制。

  SideCar具有以下两个功能:

  常见弹性:

  常见的测试能力

  服务观察是在过去两年中发布的一个相对较新的概念。云尼亚基金会还将观察结果视为18年来其蓝图中的板块。观察不等于监测。他们仍在监视。有很大的差异。

  监视是指从操作和维护人员的角度来看系统的行为和状态。这是一种从系统外部探索系统操作状态的被动方法。

  天文台是指从开发人员的角度探索系统的操作。对于开发人员来说,有必要考虑泄露哪些系统指标。以前,系统的操作主要通过日志查看。

  因此,可以说观察是概念的创新。通常,观察可以分为指标,日志收集和分布式跟踪

  指标(指标)是指通过汇总数据监视和理解系统行为。

  例如,我们可以在系统操作中的某个时间进行一些记录,然后统一这些生成的数据。最后,我们可以在趋势图中显示在此期间运行的系统的状态。

  ISTIO中的索引分类:

  该图显示了ISTIO正式文档提供的一些控制平面指标

  访问日志指标是通过汇总数据监视应用程序操作,该日志是指通过系统生成的事件进行监视应用程序。

  ISTIO提供访问日志,包括非常完整的长数据信息,例如请求源和目标地址。在同一时间,您还可以设置日志生成的位置(可以在本地存储,也可以直接导入远程三个 -派对工具)

  一般来说,日志内容主要包括两个部分

  有些是应用程序本身的日志,也就是说,在开发过程中输出的一些日志;另一方面,您还可以查看Envoy生成的信息。它将记录请求生成的数据的详细记录。查看Envoy的容器:

  分发跟踪分布式跟踪以通过跟踪请求来了解服务之间的呼叫关系,服务跟踪主要用于问题调查和绩效分析

  在左侧的图片中,没有分布式跟踪的应用。当第一个节点发生时,您不知道服务中出现哪种服务,因为没有办法跟踪它,只能通过不断尝试找到问题来找到问题。

  右侧的图片中使用了分布式跟踪系统。在第一个节点遇到问题后,您可以快速找出通过分布式跟踪系统在呼叫链上的哪个节点问题。

  这张照片是分布式跟踪的情况。您可以从左侧看到整个服务的呼叫关系以及整个服务所需的时间。很容易找到其异常情况。

  ISTIO的安全性主要分为两个部分:认证和授权。大多数功能是由ISTIOD控制平面(控制平面)实现的

  看看这张照片。在ISTIOD中,加利福尼亚州(证书授权)主要用于负责证书的管理。认证策略和授权策略将存储在相应的模块中。相应的数据平面。终端用户在网格中调用服务时,它可以使用JWT进行认证。以及在网格中的服务和服务之间(例如,Servicesa,和Serviceb)可以使用两个-Way TLS进行认证

  ISTIO中的身份验证主要包括两种类型,一种是对等认证,另一个是请求认证。此外,认证策略将存储在配置存储中,然后将其发送到数据平面。

  看看上图。管理员配置了两种策略。一个是为了这个名称空间。它的目标是所有服务,另一个目标是针对此命名空间。它的目标是工作负载X。这些就是这些。这些策略将被转换为特定的配置信息,然后通过ISTIOD发送到特定的Sidecar代理。值得一提的是,ISTIO在认证中提供了一种可以加密和非加密的认证模式。换台,这为我们带来了极大的便利,可以在安全设置中进行调试。例如,当您想增加MTL之类的认证策略时,您可以首先测试纯文本之间的服务之间的连接,然后再测试此策略。

  ISTIO的认证主要包括两种类型,

  认证策略配置配置认证策略需要为不同身份验证方法建立相应的CRD。例如,如果您需要配置对等身份验证,则需要构建CRD(例如Peerauthentication)。

  同时,需要有效的范围。认证配置的有效范围主要是三点。

  第一点在整个网格中是有效的。

  第二点在当前的命名空间中有效。例如,在下面的示例中,FOO中指定的名称空间有效;

  此外,您可以进一步指定特定的工作负载(服务)。例如,以下示例,在当前配置中,指定了选择器。这样,配置将仅针对标签评论等服务生效。

  具体策略是指定MTL,其模式严格(严格模式),或者可以更改为兼容模式

  战略变化:一旦更新了策略,ISTIO将实时将这些策略推向特定的数据平面,但是ISTIO不能同时保证所有数据平面。然后在此计时器上提出两种方法:

  如果您是PEER -TO -PEER身份验证,则需要在需要设置MTL时使用兼容模式。调试完成后,您需要使用严格的模式。

  如果您通过时间进行身份验证,则可以同时将两个旧的JWT配置为策略。当需要请求将所有请求迁移到新JWT时,则旧删除

  授权级别和认证类型也分为三个级别,这些级别被授权用于网格,名称空间和服务本身,其工作方法和认证相似。

  让我们看下面的图片。当管理员添加授权策略时,API服务器将将策略转换为相应的配置,然后将其发送到相应的数据平面侧面。运行时执行授权请求。如果请求到达代理,则授权引擎将根据当前策略评估请求的上下文,并返回授权结果。

  默认情况下不需要显示授权,默认值为启动状态

  授权策略配置配置授权策略需要通过创建授权工作的CRD来实现。此CRD主要具有以下组件:

  如下图所示,当前的授权策略是指以下两个来源的请求以访问HTTP服务,并需要带有以下配置JWT令牌

  也有许多方法来设定授权策略。首先,可以设置范围。它主要是通过元数据和选择器字段的“命名空间”字段指定特定服务的。匹配匹配还支持精确的匹配,模糊,前缀和后缀匹配。例如,以下示例是路径:[“/test/*”,“*/info”]是后缀,前缀方法匹配方法匹配方法

  此外,您还可以设置所有允许和拒绝全部的策略。以下示例显示了所有许可。设置方法非常简单。只是设置一个空的规则

  您还可以添加自定义条件,例如,此示例添加了一个条件,例如request.headers。当标头的值包括V1或V2时,匹配条件将生效。

  原始:https://juejin.cn/post/7099678368634765343