综述
本文介绍Istio:开源的连接,管理和安全的微服务。Istio提供了一种简单方式,让发布的服务创建连接并实现负载均衡,服务间的认证,监控,还有更多,而在服务中不需要改变任何代码。接入Istio,支持服务由特定的代理发布,在服务之间会拦截网络通信并贯穿你的环境,使用Istio可以配置和管理整个面的够功能特性。
Istio当前只支持服务发布到Kubernetes,而其他的环境将会在未来的版本中才支持。
为了了解更多关于Istio组件的细节上和概念上的东西,可以看看概念指南。
为什么使用Istio?
Istio处理了很多开发者和维护人员要面对的挑战,因为在整体的项目的运作是分布式的微服务架构。服务网格是用于被描述微服务网络,所组成的应用程序之间的交互。当服务网格越长大就越复杂,将会变得很难理解和管理。它包含了服务发现、负载均衡、故障恢愎、指标度量、监控,还有一些复杂的操作,比如说A/B测试,金丝雀发布,限流,权限控制和端对端认证。 Istio提供完整的令人满意的解决方案,让不同需求的微服务的行为和操作在服务网格里面作为一个整体看待。在服务网络中,一致性地提供了很多关键性功能:
流量管理:控制服务之间的流量和API,让其更加可靠,而在面对不利的条件下,也能让网络更加健壮。
可观察性:在服务和环境中获取依赖关系,它们之间的流量,提供了可以快速确认的机制。
策略实施:服务之间,提供了组织性的策略以便交互,确认服务策略是强制的,在消费者之间资源是相当分散的。策略改变由网格配置,而无需改动代码。
服务标识和安全:在服务网格中的服务,有着可以校验的身份;在不同认证的网络下,也同样可以保护服务流量。
在这些行为中,Istio设计了更好的扩展性,来满足不同的发布需要:
平台支持:Istio是设计为可以在多种环境下运行的,包括云、本地部署、Kubernetes、Mesos等。期初强制在Kubernetes上工作,后续也会提供其他的环境。
集成和自定义:策略实施容器可以扩展和自定义,并可以和ACLs方案、日志、监控、分配、审计等功能整合。
这些功能很大程度上减少了应用程序的代码,而在平台和策略上。减少内容不仅让服务更快地构建,而且可以容易操作、迁移、发布到不同的环境或者是不同的策略。应用程序变成了固有的、简易的结果。
架构
Istio网格服务是逻辑上划分为数据层和控制层。
数据层是构成了一组智能的代理(Evoy)来发布,负责协调和控制服务间的所有网络的通信。
控制层是负责管理和配置路由转发流量,就是运行时实施的策略。
下面的图表,展示了不同组件在不同层的组成:
Envoy(使者)
Istio使用了扩展版本的Envoy代理,C++开发的一个高可用的代理,在服务网格中协调所有服务的内外通信。Istio利用了Envoy的很多构建特性,例如服务的动态发现,负载均衡,TLS终结,HTTP/2和RPC代理,熔断,健康检查,流量分割,故障恢复,丰富的指标度量。
Envoy作为一个漏斗已经发布了,在相同的Kubernates的Pod中相关服务。允许Istio提取大量关于流量行为的信号量,并作为它的属性,它会依次使用混合器并实行策略,然后发送给监系统,而将行为信息提供给对应的网格。漏斗代理模型运行你引入Istio功能特性到一个已存在的部署环境,而无需重构或者重写代码。你可以阅读更多关于它的设计理念。
混合器
混合器是一个平台依赖组件,它的责任是实行权限控制,实施网格的策略,从使者代理和其他服务中收集自动测量的数据。代理提取了请求的级别属性,并用于混合器的审计。更多关于属性提取和策略审计的信息,可以在混合器配置中找到。混合器包括灵活的禅机模型,它可以使用接口来使用大量主机环境和后端基础设施,在这些细节中抽象使者代理和Istio管理的服务。
领航员
领航员为了使者漏斗提供了服务发现,在流量管理功能中实现了灵活的路由(例如A/B测试,金丝雀发布等),弹性(超时,重试,熔断等)。它转化高可用路由规则,来控制流量行为并在Envoy的配置中,在运行时传播到漏斗中。领航员抽象了指定平台的服务发现机制,并合成了标准格式的、可消费的漏斗,它符合使者数据层API。松耦合地允许Istio运行在多环境中(例如,Kubernetes,Consul/Nomad),在流量管理中使用通用的操作接口。
Istio认证
Istio认证提供健壮的服务和最终用户认证中使用了共同的TLS,还有构建标识和认证管理。在服务网格中,可以用于升级没有加密的通信,并让操作者可以基于服务标识而是网络控制,来实行策略管理。在未来的发行中将会加入更好的权限控制、审计控制,并监控服务、API或者资源,使用大量的权限控制机制,包括属性和类似认证钩子的角色基础权限控制。
接下来是什么?
领取专属 10元无门槛券
私享最新 技术干货