Istio 组件和架构
Istio 的架构分为数据平面和控制平面两个部分。Istio 使用的是 Envoy 代理,这是一种可部署为边车模式的高性能代理,负责为服务网格内的所有服务调解流量。在数据平面中,开发人员可通过在环境中部署边车代理为服务添加 Istio 支持。这些边车代理与微服务并存,用于将请求路由到其他代理,或从其他代理路由请求。由这些代理共同组成的网格网络可对微服务之间的网络通信进行拦截。控制平面则负责管理和配置代理来路由流量。此外,控制平面还可配置组件,以实施相关策略并收集遥测数据。
红帽资源
Istio 的主要功能
流量管理
Istio 可对服务之间的流量进行细粒度控制。它具有先进的流量路由功能,且支持不同的测试和部署方式,其中包括:
- A/B 测试:对两个版本进行比较。
- 金丝雀部署:先发布一个用于测试的小范围部署。
- 蓝绿部署:创建两个相同但独立的环境以减少停机时间并降低风险。
Istio 还可以处理服务实例之间的负载均衡。这意味着如果使用 Istio,来自服务的出站流量会被其边车代理拦截。代理会根据控制平面中所定义的路由规则将请求转发至相应的接收方。
服务发现和弹性
Istio 可自动发现网格中的服务。它可以通过故障注入测试来模拟故障场景并评估系统在异常条件下的表现。Istio 具有重试、超时和熔断等弹性机制。控制平面会跟踪所有服务实例及其位置,新的服务实例启动后,它会将自己的信息注册到控制平面。
可观测性和可扩展性
Istio 具有可观测性和可扩展性。它通过与 Jaeger 或 Zipkin 等工具的集成实现分布式跟踪,并通过 Prometheus 收集指标和遥测数据。它包含详细的服务级信息面板,可直观呈现服务之间的通信。边车代理会收集请求数量、延迟和错误率等指标,并将其发送给控制平面或监控工具。此外,Istio 可与监控工具、日志记录系统和自定义策略引擎等外部系统集成,从而为服务网格引入新的功能。
安全性和策略实施
双向传输层安全性(mTLS)通过双向身份验证在两个应用之间保护隐私和安全。TLS 模式采用的是单向身份验证,即服务器对客户端进行身份验证。而在 mTLS 模式下,客户端和服务器之间或者网站和 Web 浏览器之间可进行双向身份验证。Istio 通过 mTLS 实现服务到服务的安全通信,利用基于角色的访问权限控制(RBAC)和策略来保障 API 的安全,同时还支持证书管理和密钥的自动轮换。
Istio 可集中配置配额、速率限制和身份验证/授权等服务策略。它通过访问策略让您实现对服务交互的细粒度控制。身份验证、速率限制或访问权限控制策略在代理级别实施,旨在确保服务间的一致性。
环境模式
Istio 引入了环境模式,这是一种新的数据平面模式,在该模式下,工作负载容器集无需边车代理即可加入网格,因此,环境模式有时也被称为“无边车”模式。在环境模式下,边车代理被基础架构集成的数据平面所取代,该数据平面仍然支持 Istio 的零信任安全性、遥测和流量管理。由于消除了对边车代理的需求,环境模式还可减少 CPU 和内存消耗所需的基础架构资源。在 Istio 的普通模式下,Envoy 代理会与每个应用容器集交互,但在环境模式下,应用容器集不受影响,且拥有各自的应用容器。
Istio 和服务网格的用例和示例
Istio 服务网格可完成一些特定的目标和任务。以下是一些 Istio 用例以及服务网格如何帮助企业组织实现目标的示例。
微服务流量控制
某大型电子商务平台频繁更新其服务,如购物车功能、支付方式和库存。借助服务网格,该企业组织可以使用金丝雀部署向部分用户逐步推出新功能。它还可以使用蓝绿部署将流量从旧版本迁移到新版本,且不会造成停机或用户体验中断。借助 A/B 测试,该企业组织还可以将特定比例的流量路由到不同的服务版本。
安全的服务到服务通信
某金融服务公司跨多项服务处理敏感的用户数据,以管理账户并检测欺诈活动。通过使用服务网格,该公司能够实施 mTLS 以提高服务间通信加密的安全性。服务网格还为服务交互提供了细粒度 RBAC。
弹性和容错能力
某视频流媒体平台希望即使某项服务出现故障或变慢,播放功能仍然不会中断。服务网格支持通过熔断自动停止向出现故障的服务发送请求。借助基于指数退避的重试,可智能地提示就失败的请求进行重试。服务网格负载均衡有助于在运行状况良好的服务实例之间分配流量。
可观测性和监控
在 Kubernetes 上运行的某软件即服务(SaaS)平台需要诊断数十个微服务的延迟问题。服务网格支持分布式跟踪,允许开发人员跨服务跟踪请求。它还能提供实时的遥测数据,包括错误率和流量模式。
API 网关集成
API 网关用于向外部客户端公开服务,内部服务则在网格内进行通信。使用服务网格有助于确保内部服务通信的安全,同时允许外部流量通过 API 网关。服务网格还能统一应用策略,这样企业组织就能确保在内部服务中实施一致的速率限制等规则。
法规遵从性
某医疗服务提供方必须遵守《健康保险流通与责任法案》(HIPAA)中关于安全传输数据的规定。借助服务网格,该提供方可实施 TLS 等加密标准。服务网格还提供详细的服务通信审计日志以满足合规性和文档记录的需求。
动态环境
某游戏公司会在游戏高峰时段或促销活动期间频繁扩大或缩小服务规模。服务网格可自动发现流量并将其路由到新创建的服务实例。服务网格还能确保扩缩期间的性能稳定性。
为什么为 Istio 选择红帽 OpenShift Service Mesh?
红帽® OpenShift® Service Mesh 基于 Istio 项目,通过在应用中创建集中控制点来应对微服务架构中的各种问题和用例。OpenShift Service Mesh 无需对应用代码进行任何更改即可在现有分布式应用上添加一个透明层。可通过该网格轻松创建已部署服务的网络,还可实现发现、负载均衡、服务到服务身份验证、故障恢复、指标和监控功能。
红帽 OpenShift Service Mesh 已针对红帽 OpenShift 进行了测试和优化。它提供了与 OpenShift 特有功能(例如 Operator 以及持续集成/持续交付(CI/CD)管道)的兼容性。它附带红帽的企业级支持,且会定期更新和修补,以确保安全性和稳定性。OpenShift Service Mesh 可以跨多个红帽 OpenShift 集群运行,从而实现跨混合云或多云环境的一致性。它支持多租户,因此,企业组织可管理面向不同的团队或工作负载的独立服务网格。其内置的安全防护功能默认针对所有服务启用 mTLS,还与红帽 OpenShift 的 OAuth 实现了集成,因此支持值得信任的身份验证和授权。
红帽官方博客
获取有关我们的客户、合作伙伴和社区生态系统的最新信息。