谷歌、IBM 与 Lyft 三方已经共同公布了 Istio 项目的首次公开发行版。Istio 是一个开源项目,旨在提供一种统一化的微服务连接、安全保障、管理与监控方式。我们目前的发行版主要面向 Kubernetes 环境 ; 当然,在后续的升级当中,我们还将逐步实现对虚拟机以及 Cloud Foundry 等其它环境的支持能力。
Istio 项目能够为微服务架构提供流量管理机制,同时亦为其它增值功能(包括安全性、监控、路由、连接管理与策略等)创造了基础。这款软件利用久经考验的 Lyft Envoy 代理进行构建,可在无需对应用程序代码作出任何发动的前提下实现可视性与控制能力。Istio 项目是一款强大的工具,可帮助 CTO/CIO 们立足企业内部实施整体性安全、政策与合规性要求。
项目背景
编写具备高可靠性、松散耦合的微服务式生产级应用程序往往存在一定程度的挑战。随着整体式应用程序被拆分为微服务,软件团队必须面临并应对在分布式系统当中实现服务集成所带来的诸多难题:其必须考虑服务发现、负载均衡、容错性、端到端监控、面向功能实验的动态路由以及最为重要的两大前提——合规性与安全性。
目前行业中处理上述挑战的方法多种多样,往往由各类库、脚本乃至 Stack Overflow 片段拼凑而成,这直接导致其包含大量不同编程语言与运行时,功能可观察性差且往往会令最终安全性受到负面影响。
其中一类解决方案在于立足常规 RPC 库(例如 rRPC)实施标准化调整,但其全面采用会给企业带来高昂成本,同时亦会迫使其放弃部分根本无法变更的旧有应用程序。很明显,运营人员需要一套灵活的工具包,确保其微服务始终具备安全性、兼容性、可追踪性以及高可用性 ; 与此同时,开发人员则需要能够在生产环境中尝试不同功能或者部署金丝雀版本(canary releases),并保证其不会影响到整体系统。
解决方案:服务网格
想象一下,如果我们能够以透明化方式在服务与网络之间插入一个基础设施层,借此为运营人员提供必要的控制能力,同时帮助开发人员不必在其代码当中引入分布式系统带来的专用解决方案,那么前面提到的诸多挑战将迎刃而解。正如微服务架构能够帮助各功能团队实现彼此解耦,服务网格则能够帮助运营人员从应用程序功能开发与发布流程当中解耦出来。Istio 项目即因此而生,它能够以系统化方式将代理机制接入至网络路径当中,从而将不同微服务转化为综合性服务网格。
谷歌、IBM 与 Lyft 三方联手开发出的 Istio 项目基于我们为内部及企业客户构建及运营大规模微服务架构中积累起的丰富经验,旨在为微服务架构的开发与维护工作提供可靠基础。谷歌与 IBM 双方长久以来一直在在内部应用程序中采用此类大规模微服务架构,同时亦具备丰富的高敏感度 / 监管环境企业客户服务经验。而 Lyft 则开发出 Envoy 以解决其内部可操作性挑战。Lyft 在经过一年的成功使用之后,决定将 Envoy 推向开源,其能够管理超过 100 项服务、跨越上万套虚拟机且每秒可处理 200 万条请求。
Istio 的优势
集群规模可视性:在故障状况出现时,运营人员需要利用多种工具以始终关注集群运行状况并分析微服务状态图表。Istio 项目能够监控与应用程序及网络活动相关的数据,利用 Prometheus 与 Grafana 对这部分数据加以渲染,而后将相关指标与日志记录发送至任何收集、聚合与查询系统当中以实现功能扩展。Istio 项目亦利用 Zipkin 追踪分析性能热点并对分布式故障模式加以诊断。
弹性与效率:在开发微服务时,运营人员需要假设网络本身处于不可靠状态。运营人员能够利用重试、负载均衡、流量控制(HTTP/2)以及断路补偿等方式解决由网络可靠性低下所造成的各类常见故障模式。Istio 项目则提供一种统一方法以配置上述功能,使得运营人员能够更为轻松地运作高弹性水平服务网格。
开发人员生产力:Istio 项目能够确保开发人员专注于利用已选择的编程语言构建服务功能,从而极大提升其生产能力。另外,Istio 项目则负责以统一化方式处理弹性与网络挑战。开发人员无需将解决方案的分布式系统问题解决机制引入编写的代码当中。Istio 项目还能够支持 A/B 测试、金丝雀部署以及故障注入等常用功能,旨在进一步提高生产效率。
政策驱动型运营:Istio 项目能够授权具有不同职能的团队以实现独立运作。其将集群运营人员与功能开发人员进行周期性剥离,从而在无需更改代码的前提下提升安全性、监控能力、扩展性与服务拓扑水平。运营人员能够精确控制生产流量中各个子集的路由方式,从而匹配新的服务版本。另外,运营人员还能够在流量中注入故障或者提高延迟水平,用以测试服务见长的弹性 ; 同时设置速率限制以防止服务过载。Istio 项目还可用于强制执行合规性要求,例如在服务之间定义 CL 以确保仅具备授权的服务间可相互通信。
默认安全:分布式计算当中经常存在着大量网络安全问题。Istio 项目允许运营人员利用 TLS 连接以认证并保护各服务之间的所有通信,而不会给开发人员或者运营人员带来由证书管理造成的额外负担。我们的安全框架与新的 SPIFFE 规范保持一致,事实上谷歌公司一直在内部广泛使用类似的保障性系统。
增量化采用:我们在设计 Istio 项目时充分考虑到网络内所运行各服务的透明性,允许团队随着时间推移逐步采用 Istio 提供的各项功能。采用方可以先从启用集群范围内可视性起步,并在 Istio 在环境中的表现感到满意后根据实际需要启用其它功能。
加入我们共同开启新的旅程
Istio 属于完全开源之项目。今天,我们发布了其 0.1 版本,适用于 Kubernetes 集群。未来我们计划每三个月进行一次主要版本更新,其中包括支持其它环境。我们的目标是帮助开发人员与运营人员以敏捷性、底层网络全面可视性以及立足一切环境的统一化控制与安全保障能力为前提,发布并运营属于您自己的微服务体系。我们期待着与您在 Istio 社区中并肩协作,并以合作伙伴的角度共同实现各项发展目标。如果您有兴趣,请以下链接查看我们的发展路线图。
本文来自开源中国社区 [http://www.oschina.net]