Istio在服务网络中统一提供了许多关键功能,主要包括流量管理、安全、可观测性、平台支持、集成和定制五个部分。
1.流量管理
通过简单的规则配置和流量路由,Istio可以控制服务之间的流量和API调用。Istio简化了熔断器、超时和重试等服务级别属性的配置,并且可以轻松设置A/B测试、金丝雀部署和基于百分比的流量分割的分阶段部署等重要任务。
Istio有开箱即用的故障恢复功能,你可以在问题出现之前先发现问题,通过优化使服务之间的调用更加可靠。
2.安全
Istio具备强大的安全功能,使开发人员可以专注于应用程序级别的安全性。Istio提供底层安全通信信道,并大规模管理服务通信的认证、授权和加密。使用Istio,服务通信在默认情况下是安全的,允许跨多种协议和运行时一致地实施策略,而关键的是所有这些都很少或根本不需要应用程序更改。
虽然Istio与平台无关,但将其与Kubernetes网络策略一起使用时,其优势更大,包括在网络和应用层保护pod-to-pod或服务到服务通信的能力。后续章节中会讲述如何在Kubernetes中结合网络策略与Istio来共同保护服务。
3.可观测性
Istio具备强大的追踪、监控和日志记录能力,可让你深入了解服务网格部署。通过Istio的监控功能,可以真正了解服务性能如何影响上游和下游的功能,而其自定义的仪表板可以提供对所有服务性能的可视性,并让你了解该性能如何影响其他进程。
Istio的Mixer组件负责策略控制和遥测收集,提供后端抽象和中介,将Istio的其余部分与各个后端基础设施的实现细节隔离开来,并为运维人员提供对网格和后端基础设施之间所有交互的细粒度控制。
所有这些功能可以让你更有效地设置、监控和实施服务上的服务等级目标SLO。当然,最重要的是可以快速有效地检测和修复问题。
4.平台支持
Istio是独立于平台的,目标是可以在各种环境中运行,包括跨云、内部部署、Kubernetes、Mesos等。你可以在Kubernetes上部署Istio或在具有Consul的Nomad上部署。Istio目前支持:
·在Kubernetes上部署的服务。
·使用Consul注册的服务。
·在各个虚拟机上运行的服务。
5.集成和定制
可以扩展和自定义Istio的策略实施组件,以与现有的ACL、日志记录、监控、配额、审计等解决方案集成。
此外,从版本1.0开始,Istio支持基于MCP(Mesh Conf iguration Protocol,网格配置协议)进行配置分发。通过使用MCP,可以很容易地集成外部系统,例如可以自己实现MCP服务器,然后将其集成到Istio中。MCP服务器可以提供以下两个主要功能:
·连接并监控外部服务注册系统,以获取最新的服务信息(例如Eureka、ZooKeeper等系统)。
·将外部服务信息转换为Istio ServiceEntry并通过MCP资源发布。