什么是Istio?
Istio是一个开放服务网格,提供了一种连接,管理和保护微服务的统一方法。它支持管理服务之间的流量,执行访问策略以及汇总遥测数据,所有这些都无需更改微服务代码。
Istio:
- HTTP,gRPC,WebSocket,MongoDB和TCP通信的自动负载平衡。
- 通过丰富的路由规则,重试,故障转移和故障注入对流量行为进行细粒度控制。
- 可配置的策略层和API,支持访问控制,速率限制和配额。
- 群集内所有流量的自动指标,日志和跟踪,包括群集入口和出口。
- 通过强大的基于身份的身份验证和授权,在群集中进行安全的服务间通信。
Istio架构图
概述(摘自官网)
Istio 是一个开源的独立服务网格,可为您成功运行分布式微服务架构提供所需的基础。随着各组织越来越多地采用云平台,开发者必须使用微服务设计架构以实现可移植性,而运营者必须管理包含混合和多云部署的大型分布式部署。Istio 采用一种一致的方式来保护、连接和监控微服务,降低了管理微服务部署的复杂性。
Istio 安全
减轻安全负担,让开发者可以专注于其他关键任务。
保障服务通信的安全
Istio 以可扩缩的方式管理微服务间通信的身份验证、授权和加密。Istio 提供基础的安全通信渠道,使开发者可以专注于应用级安全。
安全通信
Istio 可以增强微服务及其通信(包括服务到服务和最终用户到服务的通信)的安全性,且不需要更改服务代码。它为每个服务提供基于角色的强大身份机制,以实现跨集群、跨云端的交互操作。
深度防御
如果您结合使用 Istio 与 Kubernetes(或基础架构)网络政策,Pod 到 Pod 或服务到服务的通信在网络层和应用层都将安全无虞。Istio 以 Google 的深度防御策略为基础构建而成,以确保微服务通信的安全。当您在 Google Cloud 中使用 Istio 时,Google 的基础架构可让您构建真正安全的应用部署。
默认安全
Istio 可确保服务通信在默认情况下是安全的,并且您可以跨不同协议和运行时一致地实施安全政策,而您只需对应用稍作调整,甚至无需调整。
强大的服务身份验证
借助 Istio Auth,确保只能从经过严格身份验证和授权的客户端访问包含敏感数据的服务。
身份验证政策
Istio 的配置政策在服务器端配置平台身份验证,但不在客户端强制实施该政策,同时允许您指定服务的身份验证要求。
基于角色的访问权限控制 (RBAC)
Istio RBAC 为 Istio 网格中的服务提供命名空间级别、服务级别和方法级别的访问权限控制。它包括易于使用的基于角色的语义、服务到服务和最终用户到服务的授权,并在角色和角色绑定方面提供灵活的自定义属性支持。
双向 TLS 身份验证
Istio 可以增强微服务及其通信(包括服务到服务和最终用户到服务的通信)的安全性,且不需要更改服务代码。它为每个服务提供基于角色的强大身份机制,以实现跨集群、跨云端的交互操作。
密钥管理
Istio 的密钥管理系统可自动生成、分发、轮换与撤消密钥和证书。
Istio 监控
借助强大可靠且易于使用的监控功能,快速有效地检测和修复问题。
记录日志、监控并保持服务正常运行
Istio 通过跟踪、监控和记录日志帮您深入了解自己的服务网格部署。了解服务性能如何及其对其他进程的影响,快速有效地检测问题并对问题进行分类。
纵览全局
Istio 的自定义信息中心让您能够从宏观角度了解服务的行为,从而帮助您快速检测问题并有效地对问题进行分类。
了解服务性能
通过 Istio 的监控功能,您可以了解服务性能如何影响上游和下游,从而更有效地设置、监控和实施服务的服务等级目标 (SLO)。
随时获取所需的指标
可从任何正在运行的应用获取统一的指标和跟踪记录,而无需开发者手动对应用执行插桩 (Instrumentation) 操作。
后端抽象
Istio 的 Mixer 组件提供政策控制和遥测收集功能,将 Istio 的其余部分与各个基础架构后端的实现细节隔离开来。
中介
利用 Mixer,您可以精细控制网格和基础架构后端之间的所有交互。
低延迟
与位于网格中的每个服务实例旁边并且必须节省内存使用的 Sidecar 代理不同,Mixer 独立运行,因此它可以使用相当大的缓存和输出缓冲区,充当 Sidecar 的高度可扩缩且高度可用的二级缓存。
高可靠性
Mixer 用于为每个 Mixer 实例提供高可用性。它的本地缓存和缓冲区可以减少延迟时间,还有助于屏蔽基础架构后端故障,即使后端没有响应也是如此。
Istio 连接
Istio 可在部署规模逐步扩大的过程中助您简化流量管理。
流量管理与政策控制
通过 Istio 流量管理功能,您可以控制服务之间的流量流动和 API 调用,还可以更好地了解流量,以便在问题出现之前发现其征兆。这使得调用更加可靠、网络更加强健,即使遇到不利状况也能稳如磐石。
轻松配置规则
借助 Istio,您能够配置断路器、超时和重试等服务级属性,并设置常见的持续部署任务,如 Canary 发布、A/B 测试和基于百分比拆分流量的分阶段发布。
将内容引导至期望位置
您可以指定希望流量遵循的规则,以便将流量路由到各个服务版本,而无需受制于各个版本对应的实例数量。例如,您可以指定将所有流量的 5% 路由到特定的 Canary 版本,或者根据请求的内容将流量路由到特定版本。
开箱即用的故障恢复功能
强大的开箱即用故障恢复功能,包括超时、支持超时预算和变量抖动的重试机制、发往上游服务的并发连接和请求数限制、定期对负载平衡池中的每个成员进行的主动运行状况检查,以及被动运行状况检查(如细粒度断路器)。
分离流量管理和基础架构扩缩
通过将流量管理与基础架构扩缩分离开来,系统可提供独立于应用代码的多种功能,例如 A/B 测试所依赖的动态请求路由、逐步发布和 Canary 版本机制。此外,它还使用超时、重试和断路器来处理故障恢复,并使用故障注入来跨服务测试故障恢复政策的兼容性。
故障注入
配置有误的故障恢复政策可能会导致应用中的关键服务持续不可用,因此进行端到端故障恢复测试至关重要。Istio 可将特定于协议的故障注入到网络中,而无需终止 Pod、延迟或破坏 TCP 层的数据包。
负载平衡
Istio 目前允许使用 Envoy 支持的三种负载平衡模式:轮换(按轮换顺序选择运行状况良好的各个上游主机);随机(由随机负载平衡器随机选择一个运行状况良好的主机);以及加权最低请求数量。