您正在查看不再受支持的Red Hat OpenShift Service Mesh版本的文档。 Service Mesh 1.0和1.1版本的控制平面已不再受支持。有关升级服务网格控制平面的信息,请参见升级服务网格。 有关特定Red Hat OpenShift Service Mesh版本的支持状态信息,请参见产品生命周期页面。 |
Red Hat OpenShift Service Mesh提供了一个平台,用于对服务网格中的联网微服务进行行为洞察和操作控制。借助Red Hat OpenShift Service Mesh,您可以连接、保护和监控OpenShift Container Platform环境中的微服务。
服务网格是由分布式微服务架构中构成应用程序的微服务网络以及这些微服务之间的交互组成的。当服务网格的规模和复杂性增长时,理解和管理它可能会变得更加困难。
基于开源Istio项目,Red Hat OpenShift Service Mesh在现有分布式应用程序上添加了一个透明层,无需对服务代码进行任何更改。您可以通过将特殊的sidecar代理部署到网格中相关的服务来添加对Red Hat OpenShift Service Mesh的支持,该代理会拦截微服务之间所有网络通信。您可以使用服务网格控制平面功能配置和管理服务网格。
Red Hat OpenShift Service Mesh为您提供了一种简单的方法来创建已部署服务的网络,这些服务提供
服务发现
负载均衡
服务间认证
故障恢复
指标
监控
Red Hat OpenShift Service Mesh还提供更复杂的运维功能,包括
A/B测试
金丝雀发布
访问控制
端到端身份验证
Red Hat OpenShift Service Mesh在逻辑上分为数据平面和控制平面
数据平面是一组作为sidecar部署的智能代理。这些代理拦截并控制服务网格中微服务之间所有入站和出站网络通信。Sidecar代理还与Mixer通信,Mixer是通用的策略和遥测中心。
Envoy代理拦截服务网格中所有服务的入站和出站流量。Envoy作为sidecar部署到同一pod中的相关服务。
控制平面管理和配置代理以路由流量,并配置Mixer以强制执行策略和收集遥测数据。
Mixer强制执行访问控制和使用策略(例如授权、速率限制、配额、身份验证和请求跟踪),并从Envoy代理和其他服务收集遥测数据。
Pilot在运行时配置代理。Pilot为Envoy sidecar提供服务发现,为智能路由(例如A/B测试或金丝雀部署)和弹性(超时、重试和断路器)提供流量管理功能。
Citadel颁发和轮换证书。Citadel提供强大的服务间和最终用户身份验证,具有内置的身份和凭据管理。您可以使用Citadel升级服务网格中的未加密流量。操作员可以使用Citadel根据服务标识而不是网络控制来强制执行策略。
Galley摄取服务网格配置,然后验证、处理和分发配置。Galley保护其他服务网格组件免于从OpenShift Container Platform获取用户配置详细信息。
Red Hat OpenShift Service Mesh还使用istio-operator来管理控制平面的安装。Operator是一种软件,使您能够在OpenShift Container Platform集群中实现和自动化常见活动。它充当控制器,允许您设置或更改集群中对象的期望状态。
Kiali通过向您显示服务网格中的微服务及其连接方式来提供对服务网格的可见性。
Kiali提供对在OpenShift Container Platform上运行的服务网格的可观察性。Kiali帮助您定义、验证和观察Istio服务网格。它通过推断拓扑结构来帮助您了解服务网格的结构,并提供有关服务网格健康状况的信息。
Kiali提供实时交互式图视图,该视图提供对断路器、请求速率、延迟甚至流量流图等功能的可见性。Kiali提供有关不同级别组件的见解,从应用程序到服务和工作负载,并且可以显示具有上下文信息和图表的选择图节点或边的交互。Kiali还提供验证Istio配置(例如网关、目标规则、虚拟服务、网格策略等)的功能。Kiali提供详细的指标,并且可以使用基本Grafana集成进行高级查询。分布式跟踪通过将Jaeger集成到Kiali控制台中来提供。
Kiali作为Red Hat OpenShift Service Mesh的一部分默认安装。
Kiali基于开源Kiali项目。Kiali由两个组件组成:Kiali应用程序和Kiali控制台。
Kiali应用程序(后端)– 此组件在容器应用程序平台中运行,并与服务网格组件通信,检索和处理数据,并将这些数据暴露给控制台。Kiali应用程序不需要存储。将应用程序部署到集群时,配置在ConfigMap和密钥中设置。
Kiali控制台(前端)– Kiali控制台是一个Web应用程序。Kiali应用程序服务于Kiali控制台,然后Kiali控制台查询后端以获取数据以将其呈现给用户。
此外,Kiali还依赖于容器应用程序平台和Istio提供的外部服务和组件。
Red Hat Service Mesh (Istio) - Istio 是 Kiali 的必要组件。Istio 是提供和控制服务网格的组件。虽然 Kiali 和 Istio 可以单独安装,但 Kiali 依赖于 Istio,如果没有 Istio,Kiali 将无法工作。Kiali 需要检索 Istio 数据和配置,这些数据和配置通过 Prometheus 和集群 API 公开。
Prometheus - 一个专用的 Prometheus 实例包含在 Red Hat OpenShift Service Mesh 安装的一部分中。当启用 Istio 遥测时,指标数据将存储在 Prometheus 中。Kiali 使用此 Prometheus 数据来确定网格拓扑、显示指标、计算健康状况、显示可能存在的问题等等。Kiali 直接与 Prometheus 通信,并假定 Istio 遥测使用的数据模式。Prometheus 是 Istio 的依赖项,也是 Kiali 的硬依赖项,如果没有 Prometheus,Kiali 的许多功能将无法工作。
集群 API - Kiali 使用 OpenShift Container Platform 的 API(集群 API)来获取和解析服务网格配置。例如,Kiali 查询集群 API 以检索命名空间、服务、部署、Pod 和其他实体的定义。Kiali 还进行查询以解析不同集群实体之间的关系。还查询集群 API 以检索 Istio 配置,例如虚拟服务、目标规则、路由规则、网关、配额等等。
Jaeger - Jaeger 是可选的,但默认情况下作为 Red Hat OpenShift Service Mesh 安装的一部分安装。当您将分布式跟踪平台 (Jaeger) 作为默认 Red Hat OpenShift Service Mesh 安装的一部分安装时,Kiali 控制台将包含一个选项卡以显示分布式跟踪数据。请注意,如果禁用 Istio 的分布式跟踪功能,则跟踪数据将不可用。另请注意,用户必须访问安装服务网格控制平面的命名空间才能查看跟踪数据。
Grafana - Grafana 是可选的,但默认情况下作为 Red Hat OpenShift Service Mesh 安装的一部分安装。如果可用,Kiali 的指标页面将显示链接,引导用户直接在 Grafana 中查看相同的指标。请注意,用户必须访问安装服务网格控制平面的命名空间才能查看 Grafana 仪表板的链接和 Grafana 数据。
Kiali 控制台与 Red Hat Service Mesh 集成,并提供以下功能:
健康状况 – 快速识别应用程序、服务或工作负载的问题。
拓扑结构 – 通过 Kiali 图形可视化您的应用程序、服务或工作负载如何通信。
指标 – 预定义的指标仪表板允许您绘制 Go、Node.js、Quarkus、Spring Boot、Thorntail 和 Vert.x 的服务网格和应用程序性能图表。您还可以创建自己的自定义仪表板。
跟踪 – 与 Jaeger 集成允许您跟踪请求在构成应用程序的各种微服务中的路径。
验证 – 对最常见的 Istio 对象(目标规则、服务条目、虚拟服务等)执行高级验证。
配置 – 可选功能,可以使用向导或直接在 Kiali 控制台的 YAML 编辑器中创建、更新和删除 Istio 路由配置。
每次用户在应用程序中执行操作时,架构都会执行一个请求,这可能需要数十个不同的服务参与才能产生响应。此请求的路径是一个分布式事务。Jaeger 允许您执行分布式跟踪,它跟踪请求在构成应用程序的各种微服务中的路径。
分布式跟踪是一种用于将有关不同工作单元的信息绑定在一起的技术——通常在不同的进程或主机中执行——以了解分布式事务中的一整条事件链。分布式跟踪允许开发人员可视化大型面向服务架构中的调用流程。它对于理解序列化、并行性和延迟的来源非常有价值。
Jaeger 记录整个微服务堆栈中各个请求的执行情况,并将它们显示为跟踪。跟踪是系统中的数据/执行路径。端到端跟踪包含一个或多个跨度。
跨度表示 Jaeger 中的一个逻辑工作单元,它具有操作名称、操作的开始时间和持续时间。跨度可以嵌套和排序以模拟因果关系。
作为服务所有者,您可以使用分布式跟踪为您的服务添加工具,以收集有关您的服务架构的见解。您可以使用 Red Hat OpenShift 分布式跟踪平台来监控、网络分析和故障排除现代、云原生、基于微服务的应用程序中组件之间的交互。
使用分布式跟踪平台,您可以执行以下功能:
监控分布式事务
优化性能和延迟
执行根本原因分析
分布式跟踪平台 (Jaeger) 基于开源 Jaeger 项目。分布式跟踪平台 (Jaeger) 由几个组件组成,这些组件协同工作以收集、存储和显示跟踪数据。
Jaeger 客户端(跟踪器、报告器、已检测应用程序、客户端库)- Jaeger 客户端是 OpenTracing API 的特定于语言的实现。它们可用于手动或使用各种现有的开源框架(例如 Camel (Fuse)、Spring Boot (RHOAR)、MicroProfile (RHOAR/Thorntail)、Wildfly (EAP) 和许多其他已与 OpenTracing 集成的框架)为分布式跟踪检测应用程序。
Jaeger 代理(服务器队列、处理器工作程序)- Jaeger 代理是一个网络守护程序,它侦听通过用户数据报协议 (UDP) 发送的跨度,然后将其批量发送到收集器。代理旨在放置在与已检测应用程序相同的主机上。这通常通过在 Kubernetes 等容器环境中使用 sidecar 来实现。
Jaeger 收集器(队列、工作程序)- 与代理类似,收集器能够接收跨度并将它们放入内部队列以进行处理。这允许收集器立即返回到客户端/代理,而不是等待跨度进入存储。
存储(数据存储)- 收集器需要持久性存储后端。Jaeger 具有用于跨度存储的可插入机制。请注意,对于此版本,唯一支持的存储是 Elasticsearch。
查询(查询服务)- 查询是一种从存储中检索跟踪的服务。
数据接收器 (Ingester 服务) - Jaeger 可以使用 Apache Kafka 作为收集器和实际后端存储 (Elasticsearch) 之间的缓冲区。数据接收器是一个从 Kafka 读取数据并写入另一个存储后端 (Elasticsearch) 的服务。
Jaeger 控制台 – Jaeger 提供了一个用户界面,允许您可视化您的分布式跟踪数据。在搜索页面上,您可以查找跟踪并探索构成单个跟踪的跨度的详细信息。