北京时间2019年3月20日,Istio v1.1版本发布。在Istio继续1.0版本之后,先后发布了6个补丁来扩充和完善相关功能。经过8个月的努力,不计其数的测试迭代,1.1版本终于和大家见面,引起广泛讨论。

在对Istio 1.1进行全方位解读之前,我们先来回顾一下Istio的设计初衷。Istio设计之初期望于能够简化应用的开发及部署方式,把应用上线所需的外围支撑系统与业务应用相分离,从而减轻开发团队的压力,提升开发效率。同时Istio基于网络代理的实现方案,为业务运行时的流量控制、安全策略以及运行态实时监测提供了强大的支持功能。而这些功能一定程度上等价于给业务系统减负,使得服务能够更快更方便地构建、迁移和发布。

Istio 1.1官宣新主题在于enterprise-ready(企业应用水准)。从官方文档给出的Release Notes分析,1.1版本基于Istio 之前版本被诟病的性能问题做了重点优化,同时针对隔离性、安全性、多集群和可扩展性做了进一步加强,以满足用户对于多场景的支持。

Istio最新架构如图所示:

全方位解读 | Istio v1.1正式发布_第1张图片

性能优化

Istio 1.1带来的最显著的性能变化在于提升了数据平面和控制平面的执行效率。根据官方测试数据显示(在本地环境有待进一步验证),新发布的istio-proxy(sidecar)仅需要半个vCPU的资源就可以支撑1000 RPS,同时单个Pilot实例仅仅需要1.5个vCPU与2 GB RAM就可以支持1000个应用(2000个pod)。Istio-proxy在半数情况下仅增加5ms延迟,在99%的情况下增加10ms延迟。从而初步解决Pilot资源过度消耗以及istio-proxy延迟大的劣势。

隔离性

Istio 1.1 提供新类型的sidecar资源,允许用户基于namespace增加sidecar对象对边界强制控制,以达到减轻proxy计算负担的效果。同时增加exportTo字段,用来指定网络资源在namespace中的生效范围。

安全性

Istio 1.1在安全性方面同样有了很大的提升,主要包括更新serviceEntity资源,使得HTTPS的服务不在需要额外的VirtualService来开启SNI路由;在启动双向TLS的场景下,支持Readiness,Liveness健康检查策略;更新集群RBAC的权限配置,使用ClusterRbacConfig对象替代原来的RbacConfig,以扩展集群范围的RBAC的权限控制;集成Vault PKI,动态加载和替换外部证书,TCP服务授权,插件凭证保护以及SDS身份认证等方式。大范围增加了Isito的安全特性。

多集群

Istio 1.1 改进流量控制和策略的默认配置,引入Galley新组件,用来验证YAML文件的规范性,合法性,以降低配置错误的几率。同时Galley可以在集群中发挥强大的作用,用来从多个kubernetes集群中收集服务发现信息。同时支持在无需扁平网络的前提下实现单一控制平面与多个同步控制平面。

部署安装

Istio 1.1修改Helm chart,关闭Egressgateway,默认关闭Mixer Policy以及允许所有的出口流量,同时允许自定义CRD与istio chart分离,提供数据延续性。

Istio 1.1还提供了其他方面的更新,例如链路跟踪优化,外部Adapter等。

新版本具体更新文档地址: https://istio.io/docs/

新版本Release代码下载地址:https://github.com/istio/istio

全方位解读 | Istio v1.1正式发布_第2张图片