Istio中文版是一个用来连接、管理和保护微服务的开放平台。 Istio提供一种简单的方式来建立已部署服务网络,具备负载均衡、服务间认证、监控等功能,而不需要改动任何服务代码。 想要为服务增加对Istio的支持,您只需要在环境中部署一个sidecar,使用Istio控制面板功能配置和管理代理,拦截微服务之间的所有网络通信。随着微服务出现,微服务的连接、管理和监控成为难题。Kubernetes 可以处理多个容器的工作负载,但当涉及更复杂的需求时,需要像Istio这样的微服务网格。闪电小编这里带来的是最新版,需要的就来下载吧!
功能特色
连
智能控制服务之间的流量和API调用,进行一系列测试,并通过红/黑部署逐步升级。
安全
通过托管身份验证,授权和服务之间通信加密自动保护您的服务。
控制
应用策略并确保它们得到执行,并且资源在消费者之间公平分配。
守
通过丰富的自动跟踪,监控和记录所有服务,了解正在发生的情况。
什么是Istio?
云平台为使用它们的组织提供了丰富的好处。然而,不可否认的是,采用云可能会给DevOps团队带来压力。开发人员必须使用微服务来构建可移植性,同时运营商正在管理极其庞大的混合和多云部署。Istio允许您连接,保护,控制和观察服务。
在较高的层次上,Istio有助于降低这些部署的复杂性,并减轻开发团队的压力。它是一个完全开源的服务网格,可以透明地分层到现有的分布式应用程序上。它也是一个平台,包括允许它集成到任何日志记录平台或遥测或策略系统的API。Istio的多样化功能集使您能够成功,高效地运行分布式微服务架构,并提供安全,连接和监控微服务的统一方法。
什么是服务网格?
Istio解决了开发人员和运营商在单片应用程序向分布式微服务架构过渡时所面临的挑战。要了解如何,有必要更详细地了解Istio的服务网格。
术语服务网格用于描述构成此类应用程序的微服务网络以及它们之间的交互。随着服务网格的大小和复杂性的增加,理解和管理变得更加困难。其要求可包括发现,负载平衡,故障恢复,指标和监控。服务网络通常还具有更复杂的操作要求,如A / B测试,金丝雀版本,速率限制,访问控制和端到端身份验证。
Istio作为一个整体提供对服务网格的行为洞察和操作控制,提供完整的解决方案以满足微服务应用程序的各种需求。
为什么要使用Istio?
通过负载平衡,服务到服务身份验证,监控等,Istio可以轻松创建已部署服务的网络,而无需更改服务代码。通过在整个环境中部署特殊的sidecar代理来拦截服务的Istio支持,该代理拦截微服务之间的所有网络通信,然后使用其控制平面功能配置和管理Istio,其中包括:
-
HTTP,gRPC,WebSocket和TCP流量的自动负载平衡。
-
通过丰富的路由规则,重试,故障转移和故障注入,对流量行为进行细粒度控制。
-
可插入的策略层和配置API,支持访问控制,速率限制和配额。
-
群集中所有流量的自动度量标准,日志和跟踪,包括群集入口和出口。
-
通过强大的基于身份的身份验证和授权,在群集中实现安全的服务到服务通信。
Istio旨在实现可扩展性,满足各种部署需求。
核心功能
交通管理
通过简单的规则配置和流量路由,您可以控制服务之间的流量和API调用。Istio简化了断路器,超时和重试等服务级别属性的配置,并且可以轻松设置A / B测试,金丝片部署和基于百分比的流量分割的分阶段部署等重要任务。
通过更好地了解您的流量和开箱即用的故障恢复功能,您可以在问题出现之前发现问题,使呼叫更可靠,并且您的网络更加强大 - 无论您面临什么条件。
安全
Istio的安全功能使开发人员可以专注于应用程序级别的安全性。Istio提供底层安全通信信道,并大规模管理服务通信的认证,授权和加密。使用Istio,服务通信在默认情况下是安全的,允许您跨多种协议和运行时一致地实施策略 - 所有这些都很少或根本没有应用程序更改。
虽然Istio与平台无关,但将其与Kubernetes(或基础架构)网络策略结合使用,其优势甚至更大,包括在网络和应用层保护pod-to-pod或服务到服务通信的能力。
观测
Istio强大的跟踪,监控和日志记录可让您深入了解服务网格部署。通过Istio的监控功能,可以真正了解服务性能如何影响上游和下游的功能,而其自定义仪表板可以提供对所有服务性能的可视性,并让您了解该性能如何影响您的其他流程。
Istio的混音器组件负责策略控制和遥测收集。它提供后端抽象和中介,将Istio的其余部分与各个基础架构后端的实现细节隔离开来,并为运营商提供对网状网和基础架构后端之间所有交互的细粒度控制。
所有这些功能使您可以更有效地设置,监控和实施服务上的SLO。当然,最重要的是,您可以快速有效地检测和修复问题。
平台支持
Istio是独立于平台的,旨在运行在各种环境中,包括跨云,内部部署,Kubernetes,Mesos等。您可以在Kubernetes上部署Istio,或在Consult上部署Nomad。Istio目前支持:
-
Kubernetes上的服务部署
-
在Consul注册的服务
-
在各个虚拟机上运行的服务
集成和定制
可以扩展和定制Istio的策略实施组件,以与现有的ACL,日志记录,监控,配额,审计等解决方案集成。
建筑
Istio服务网格在逻辑上被分成数据平面和控制平面。
-
该数据平面是由一组的智能代理(的特使部署为侧柜)。这些代理调解和控制微服务之间的所有网络通信以及通用策略和遥测中心Mixer。
-
在控制平面管理和配置代理来路由流量。此外,控制平面配置混音器以实施策略并收集遥测。
下图显示了构成每个平面的不同组件:
Istio建筑
使者
Istio使用Envoy代理的扩展版本。Envoy是一个用C ++开发的高性能代理,用于调解服务网格中所有服务的所有入站和出站流量。Istio利用Envoy的许多内置功能,例如:
-
动态服务发现
-
负载均衡
-
TLS终止
-
HTTP / 2和gRPC代理
-
断路器
-
健康检查
-
基于%的流量分割的分阶段部署
-
故障注入
-
丰富的指标
特使在相同的Kubernetes吊舱中作为相关服务的边车部署。此部署允许Istio将有关流量行为的大量信号作为属性提取。反过来,Istio可以在Mixer中使用这些属性来强制执行策略决策,并将它们发送到监视系统以提供有关整个网格行为的信息。
sidecar代理模型还允许您将Istio功能添加到现有部署,而无需重新架构或重写代码。您可以在我们的设计目标中详细了解我们选择此方法的原因。
混合器
Mixer是一个独立于平台的组件。混合器在服务网格中实施访问控制和使用策略,并从Envoy代理和其他服务收集遥测数据。代理提取请求级别属性,并将它们发送到Mixer进行评估。您可以在我们的混音器配置文档中找到有关此属性提取和策略评估的更多信息。
混音器包括灵活的插件模型。此模型使Istio能够与各种主机环境和基础架构后端进行交互。因此,Istio从这些细节中抽象出Envoy代理和Istio管理的服务。
飞行员
Pilot为Envoy边车提供服务发现,为智能路由(例如,A / B测试,金丝雀部署等)提供流量管理功能,以及弹性(超时,重试,断路器等)。
Pilot将控制流量行为的高级路由规则转换为特定于Envoy的配置,并在运行时将它们传播到sidecars。Pilot抽象出特定于平台的服务发现机制,并将它们合成为标准格式,任何符合Envoy数据平面API的边车都可以使用。这种松散耦合允许Istio在多个环境(如Kubernetes,Consul或Nomad)上运行,同时为流量管理维护相同的操作员界面。
堡垒
Citadel通过内置身份和凭证管理提供强大的服务到服务和最终用户身份验证。您可以使用Citadel升级服务网格中的未加密流量。使用Citadel,运营商可以根据服务标识而不是网络控制来实施策略。从版本0.5开始,您可以使用Istio的授权功能来控制谁可以访问您的服务。
厨房
Galley代表其他Istio控制平面组件验证用户创作的Istio API配置。随着时间的推移,Galley将接管Istio作为顶级配置摄取,处理和分发组件的责任。它将负责将其余的Istio组件与从底层平台(例如Kubernetes)获取用户配置的细节隔离开来。
设计目标
一些关键的设计目标为Istio的架构提供了信息。这些目标对于使系统能够以大规模和高性能处理服务至关重要。
-
最大化透明度:要采用Istio,操作员或开发人员必须尽可能少地完成工作,以从系统中获得实际价值。为此,Istio可以自动将自身注入服务之间的所有网络路径。Istio使用边车代理来捕获流量,并在可能的情况下自动对网络层进行编程,以便通过这些代理路由流量,而无需对已部署的应用程序代码进行任何更改。在Kubernetes中,代理被注入到pod中,并且通过编程捕获流量iptables规则。一旦注入边车代理并编程了交通路线,Istio就可以调解所有交通。这个原则也适用于性能。将Istio应用于部署时,运营商会看到所提供功能的资源成本最小化。组件和API必须在设计时考虑到性能和规模。
-
增量:随着运营商和开发人员越来越依赖于Istio提供的功能,系统必须随着他们的需求而增长。虽然我们继续添加新功能,但最大的需求是能够扩展策略系统,与其他策略和控制源集成,并将有关网状行为的信号传播到其他系统进行分析。策略运行时支持用于插入其他服务的标准扩展机制。此外,它允许扩展其词汇表,以允许根据网格生成的新信号强制执行策略。
-
可移植性:使用Istio的生态系统在很多方面都有所不同。Istio必须以最小的努力在任何云或本地环境中运行。将基于Istio的服务移植到新环境的任务必须是微不足道的。使用Istio,您可以运行部署到多个环境中的单个服务。例如,您可以在多个云上部署以实现冗余。
-
策略一致性:策略应用于服务之间的API调用,可以很好地控制网格行为。但是,将策略应用于不一定在API级别表达的资源也同样重要。例如,将配额应用于ML培训任务所消耗的CPU量比将配额应用于启动工作的调用更有用。为此,Istio将策略系统维护为具有自己的API的独特服务,而不是将策略系统融入代理边车,允许服务根据需要直接与其集成。