一、前言
根据InfoQ文章说明,自从2018年至今,Service Mesh的热度不断飙升,随着Kubernetes生态体系的逐渐建立和完善,基于Kubernetes应用程序的规模和复杂性将会增加,Service Mesh将成为有效管理那些应用程序所必需的一切,企业对其需求将会快速增长。
从长远来看,在Service Mesh领域也会出现类似Kubernetes的情况,最后出现一个赢家,然后公司标准化这个赢家。目前来看,Istio作为控制平面的一种技术实现在Service Mesh领域扮演了核心角色。另外,由于背靠Google公司的内部工程实践,以及对工程实践的再思考和重新提炼,Istio获得了业界广泛的关注,并且正在围绕Istio建立生态,Istio似乎最有可能成为事实上的Service Mesh。2020年将成为Service Mesh技术的普及年。
Istio
二、什么是Istio?
在介绍Istio之前,先来说说什么是服务网格?当单体应用向分布式微服务架构过渡时,开发人员和运维人员都会面临一些复杂性挑战。服务网格就是用于描述这些应用程序的微服务网络及其之间的交互。随着服务网格的大小和复杂性的增长,它变得越来越难以理解和管理。它需要包括服务发现、负载均衡、故障恢复、指标监控,同时,它通常也需要具有更复杂的运维要求,如A/B测试、金丝雀发布、速率限制、访问控制和端到端身份验证。而这些作为服务网格具体实现的Istio解决了这些问题。
Istio是一个开放平台,提供了统一的方式来集成微服务,管理跨微服务调用的流量、执行策略和汇总监测数据。Istio的控制平面在底层集群管理平台(如Kubernetes,Mesos等)上提供了一个抽象层。
DevOps
三、为什么要使用Istio?
Istio可以轻松的为已部署的服务创建带有负载均衡、端到端的身份验证、监视等功能的网络。实现这些功能,服务只需要很少的改动或者不需要改动。通过在整个环境中部署一个特殊的sidecar代理来拦截微服务之间的所有网络通信,然后使用其控制平面功能配置和管理Istio,可以为服务添加Istio支持,包括:
- HTTP,gRPC,WebSocket和TCP通信的自动负载平衡。
- 通过丰富的路由规则,重试,故障转移和故障注入对流量行为进行细粒度控制。
- 可插拔的策略层和配置API,支持访问控制,速率限制和配额。
- 集群内所有流量的自动度量,日志和跟踪,包括集群的入口和出口。
- 通过强大的基于身份的验证和授权,在群集中进行安全的服务间通信。
四、核心特性
Istio在服务网格中统一提供了许多关键的特性:
流量控制
Istio通过简单规则配置和流量路由可以控制服务之间的流量和API调用的流量。Istio简化了诸如断路器、超时和重试之类的服务级别属性的配置,并可以轻松的设置一些重要任务,如A/B测试、金丝雀发布和基于百分比的流量拆分的分阶段部署。
借助对流量的更好的可见性和开箱即用的故障恢复特性,无论遇到什么情况,都可以在问题发生之前及时发现问题,使得服务间通信更加可靠,健壮。
安全
Istio的安全功能使开发人员可以将精力集中在应用程序级别的安全上。Istio提供基础安全通信通道,并大规模管理服务通信的身份验证、授权和加密。借助Istio,默认情况下,服务间通信是安全的,可以在各种协议和运行时之间一致性的实施策略。这些操作几乎不需要更改应该程序。
尽管Istio是独立于平台的,但将其与Kubernetes(或基础架构)网络策略配合使用,其好处会更大,包括能够在网络和应用程序层保护Pod到Pod或服务到服务的通信的能力。
策略
Istio允许为应用程序配置自定义策略,以在运行时强制执行规则,例如:
- 速率限制以动态限制服务流量
- 拒绝、白名单和黑名单,以限制对服务的访问
- Header的重新和重定向
Istio还允许创建自己的策略适配器,以添加自己定义的授权行为。
可观察性
Istio强大的跟踪、监视和日志记录功能可以深入了解服务网格的部署。借助Istio的监视功能,可以真正了解服务性能如何影响上游和下游,而其自定义仪表盘可以提供对所有服务性能的可视化,并让您了解性能如何影响其他流程。
Istio的Mixer组件负责策略控制和遥测收集。它提供了后端抽象和中介,使Istio的其余部分与各个基础架构后端的实现细节隔离开来,并为运维人员提供对网格和基础架构后端之间所有交互的精细控制。
所有这些功能使您可以更有效的设置,监视和实施服务上的SLO(Service Level Objectives,服务等级目标),但最重要的是可以快速、有效的检测和修复问题。
平台支撑
Istio是独立于平台的,可以在多种环境中运行,包括跨Cloud、本地、Kubernetes和Mesos等。可以在Kubernetes或Consul的Nomad上部署Istio。Istio当前支持:
- 部署在Kubernetes上的服务
- 注册在Consul上的服务
- 运行在虚机上的服务
集成和定制
Istio的策略增强组件可以扩展和定制,以与现有的ACL、日志记录、监控、配额、审核等解决方案集成。
五、总结
随着云计算的发展,使用云平台的组织的确享受到了很多好处,但是,不可否认的是,采用云平台对DevOps团队有一定的压力,因为开发人员必须使用微服务架构来构建具有可移植性的服务,同时运营商也需要管理超大型的混合和多云的服务部署。
Istio可以连接、保护、控制和观察这些服务。从较高的角度来看,Istio有助于降低这些部署的复杂性,并减轻开发团队的负担。Istio是一个完全开源的服务网格,可以透明的集成到现有的分布式应用程序上。它也是一个平台,通过API可以将其集成到任何日志记录平台,监控和策略系统。Istio的功能多样性使得可以成功、高效运行分布式微服务架构,并提供一种统一的方式来保护、连接和监视微服务。
奔向云原生