共计 1463 个字符,预计需要花费 4 分钟才能阅读完成。
北京时间 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 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