Istio是什么?

云平台给我们带来大量好处的同时也给DevOps团队带来很多负担。开发使用微服务来架构,与此同时,运维需要管理超多环境及超复杂的部署。

Istio即是为解放微服务带来的复杂性而生,其是一个开源的服务网格,可以与现有分布式应用无缝集成。以便为您的分布式微服务架构提供一个统一的方式来连接、管理,保护及监控微服务。

服务网格是什么?

组成应用的微服务网络及服务间的交互统称为服务网格。服务网格会愈加庞大也愈加复杂,会变得难以理解且难以管理。其需求通常包括:服务发现,负载均衡,故障恢复,度量监控等。更复杂点的需求可能会有:A/B测试,灰度发布,速率限制,访问控制,端到端鉴权等。

Istio即是将服务网格看作一个整体来管理,提供完整解决方案以满足微服务应用各类需求。

为何使用Istio?

Istio支持服务以无代码修改或少量代码修改即可达到对部署服务具有负载均衡,服务间鉴权及监控等能力。这是怎么做到的呢?

这是通过在运行环境部署Istio边车代理,从而拦截微服务之间的所有网络请求,这样即可通过Istio控制面板对服务进行配置及管理。

下面为Istio提供的能力:

  • 可针对不同协议作负载均衡

如HTTP,gRPC,WebSocket,TCP等。

  • 细粒度流量行为控制

使用强大的路由规则进行流量控制,重试,容错等。

  • 访问控制

可插拔规则层及API配置以支持流量控制,速率限制,定额限制等。

  • 进出流量监控

可对集群中所有进出流量进行自动化度量,监控,跟踪等。

  • 服务到服务鉴权及授权

可以通过基于身份的鉴权及授权保障集群中服务到服务的安全通信。

此外,Istio的设计支持很高的扩展性,可满足各种部署需求。

Istio核心特性

  • 流量管理

Istio轻便的规则配置及路由设置可以让我们控制服务调用流量。通过简单配置即可实现服务级熔断,超时,重试等能力,也可以实现A/B测试,灰度发布,按比例滚动发布等。更好的流量可视化以及开箱即用的错误恢复特性,可将问题在发生前捕获。

  • 安全管理

因Istio提供底层安全通信管道,从而可管理鉴权,授权,服务加密通信等,其可在各种协议及运行时之上提供更加安全的服务通信。

因其是平台独立组件,可与Kubernetes结合使用,提供在网络或应用层上的pod到pod或service到service的安全通信。

  • 监控管理

Istio强大的跟踪,监控,日志特性可使您深入洞察您的服务网格。使用其监控特性可使我们真实理解上下游服务的调用性能,结合其可视化面板发现性能瓶颈所在。

平台支持

Istio平台独立,可在各种环境运行,包括自建集群,Kubernetes,Mesos平台等。

参考资料

[1] https://istio.io/docs/concepts/what-is-istio/