1 - Istio概述

Istio项目概述

2 - Istio的演进

Istio的演进

2.1 - (2021)Istio 开源四周年回顾与展望

今天是 Istio 开源四周年,让我们一起来回顾一下 Istio 四年来的发展并展望一下它的未来。

前言

Istio 开源四周年回顾与展望

今天是 Istio 开源四周年,让我们一起来回顾一下 Istio 四年来的发展并展望一下它的未来。

https://cloudnative.to/blog/istio-4-year-birthday/

作者 宋净超(Jimmy Song) 发表于 2021年5月25日


Istio 是由 Tetrate 创始人 Varun Talwar 和谷歌首席工程师 Louis Ryan 命名并在 2017 年 5 月 24 日开源。今天是 Istio 开源四周年,让我们一起来回顾一下 Istio 四年来的发展并展望一下它的未来。

Istio 的开源历史

2017 年是 Kubernetes 结束容器编排之战的一年,Google 为了巩固在云原生领域的优势,并弥补 Kubernetes 在服务间流量管理方面的劣势,趁势开源了 Istio。下面是截止目前 Istio 历史上最重要的几次版本发布。

日期 版本 说明
2017-05-24 0.1 正式开源,该版本发布时仅一个命令行工具。确立了功能范围和 sidecar 部署模式,确立的 Envoy 作为默认 sidecar proxy 的地位。
2017-10-10 0.2 支持多运行时环境,如虚拟机。
2018-06-01 0.8 API 重构。
2018-07-31 1.0 生产就绪,此后 Istio 团队被大规模重组。
2019-03-19 1.1 企业就绪,支持多 Kubernetes 集群,性能优化。
2020-03-03 1.5 回归单体架构,支持 WebAssembly 扩展,使得 Istio 的生态更加强大。
2020-11-18 1.8 正式放弃 Mixer,进一步完善对虚拟机的支持。

Istio 开源后经过了一年时间的发展,在 1.0 发布的前两个月发布了 0.8 版本,这是对 API 的一次大规模重构。而在 2018 年 7 月底发布 1.0 时, Istio 达到了生产可用的临界点,此后 Google 对 Istio 团队进行了大规模重组,多家以 Istio 为基础的 Service Mesh 创业公司诞生,可以说 2018 年是服务网格行业诞生的元年。

2019年 3 月 Istio 1.1 发布,而这距离 1.0 发布已经过去了近 9 个月,这已经远远超出一个开源项目的平均发布周期。我们知道迭代和进化速度是基础软件的核心竞争力,此后 Istio 开始以每个季度一个版本的固定发布节奏,并在 2019 年成为了 GitHub 增长最快的十大项目中排名第 4 名

Istio 社区

Istio 开源四年来,已经在 GitHub 上收获了 2.7 万颗星,获得了大量的社区用户。下图是 Istio 的 GitHub star 数增长情况。

008i3skNly1gqtm7n2hm1j31me0n2tag

2020 年 Istio 的项目管理开始走向成熟,治理方式也到了进化的阶段。2020 年,Istio 社区进行了第一次管委会选举,还把商标转让给了 Open Usage Commons。首届 IstioCon 在 2021 年 2 月份成功举办,几千人参加了线上会议。在中国也有大量的 Istio 社区用户,2021 年也会有线下面对面的 Istio 社区 meetup 在中国举办。

008i3skNly1gquicfqg14j31lw0smwl2

根据 CNCF 2020 年调查,46% 的组织在生产中使用服务网格或计划在未来 12 个月内使用。Istio 是在生产中使用的最多的网格。

未来

经过 4 年的发展,围绕 Istio 不仅形成了庞大的用户群,还诞生了多家 Istio 供应商,你可以在最近改版的 Istio 的官网首页中看到。在最近几个版本中,Istio 已经将发展中心转移到了提升 Day 2 Operation 体验上来了。我们还希望看到更多的 Istio 的采纳路径建议、案例研究、学习资料、培训及认证(例如来自 Tetrate 的业界的第一个 Istio 管理员认证),这些都将有利于 Istio 的推广和采用。

3 - Istio存在的问题

Istio存在的问题

3.1 - (2019)以Istio为例说明何时不做微服务

以Istio为例说明何时不做微服务

内容出处

Istio as an Example of When Not to Do Microservices

https://blog.christianposta.com/microservices/istio-as-an-example-of-when-not-to-do-microservices/

作者 Christian Posta 发表于2019年


4 - Istio的版本发布

Istio的版本发布

4.1 - Istio的版本发布概述

Istio的版本发布概述

4.2 - Istio 1.10的版本发布

Istio 1.10的版本发布

4.2.1 - Istio 1.10 版本发布并改版官网

我们很高兴地宣布Istio 1.10的发布!我们要特别感谢我们的发布经理Sam Naser和张之晗,以及整个测试和发布工作组在1.10中的工作。

内容出处

Istio 1.10 版本发布并改版官网

我们很高兴地宣布Istio 1.10的发布!我们要特别感谢我们的发布经理Sam Naser和张之晗,以及整个测试和发布工作组在1.10中的工作。

https://cloudnative.to/blog/istio-1-10-release/

作者 Istio Team 发表于 2021年5月19日


北京时间 5 月 19 日,我们很高兴地宣布 Istio 1.10 的发布!我们要特别感谢我们的发布经理 Sam Naser张之晗,以及整个测试和发布工作组在 1.10 中的工作。

这是我们 2021 年的第二个版本,和过去几个版本一样,我们继续为 Istio 用户改善 Day 2 操作。

该版本的亮点如下。

发现选择器

在以前的 Istio 版本中,Istio 的控制平面一直在观察和处理集群中它所关心的所有 Kubernetes 资源的更新。这在大型集群或配置快速变化的集群中可能是一个可扩展性瓶颈。发现选择器(Discovery Selector)限制了 Istiod 监视的资源集,所以你可以很容易地忽略那些与网格无关的命名空间的变化(例如一组 Spark Job)。

你可以认为它们有点像 Istio 的 Sidecar API 资源,但对于 Istiod 本身来说:Sidecar 资源限制了 Istiod 将发送至 Envoy 的配置集。发现选择器限制了 Istio 从 Kubernetes 接收和处理的配置集。

请看 Lin、Christian 和 Harvey 的精彩文章,深入了解这项新功能的情况。

稳定的修订版标签

早在 1.6 版本中,Istio 就增加了对安全部署多个控制平面的支持,并且我们一直在稳步提高支持度。关于修订版的一个主要的可用性抱怨是需要大量的命名空间重新标记来改变修订版(revision),因为一个标签(label)直接映射到一个特定的 Istio 控制平面部署。

有了修订版标签,现在有了一个间接层:你可以创建像 canaryprod 这样的标签,把使用这些标签的命名空间标记为修订版(即 istio.io/rev=prod),并把特定的 Istiod 修订版与该标签联系起来。

例如,假设你有两个修订版,1-7-61-8-0。你创建一个指向 1-7-6 版本的修订标签 prod,并创建一个指向较新的 1-8-0 版本的修订标签 canary

img

命名空间 A 和 B 指向 1-7-6,命名空间 C 指向 1-8-0

现在,当你准备将 1-8-0 修订版从 canary 推到 prod 时,你可以将 prod 标签与 1-8-0 Istiod 修订版重新关联。现在,所有使用 istio.io/rev=prod 的命名空间将使用较新的 1-8-0 版本进行注入。

img

命名空间 A、B 和 C 指向 1-8-0

请查看更新后的 Canary 升级指南

Sidecar 网络变化

在以前的 Istio 版本中,Istio 已经重写了 pod 网络,从 eth0 捕获流量,并将其发送到 lo 上的应用程序。大多数应用程序都绑定了这两个接口,并没有注意到任何区别;但有些应用程序被特别编写为只期望在其中一个接口上获得特定的流量(例如,通常只在 lo 上暴露管理端点,而从不通过 eth0,或者有状态的应用程序只绑定 eth0)。这些应用程序的行为可能会受到 Istio 引导流量进入 pod 的影响。

在 1.10 版本中,Istio 正在更新 Envoy,默认在 eth0 而不是 lo 上向应用程序发送流量。对于新用户来说,这应该只是一个改进。对于现有的用户,istioctl experimental precheck 将识别出监听 localhost 的 pod,并可能受到影响,如 IST0143

请参阅 John Howard 的文章,以更深入地了解这一变化,如何以及为什么它可能会影响你,以及如何实现无缝迁移。

Istio.io 改版

我们对 Istio.io 进行了改造,采用了全新的外观!这是 Istio 项目启动近四年以来,网站的第一个重大变化(我们将在 5 月 24 日,北京时间 5 月 25 日,庆祝这个周年纪念日!)。我们希望这些变化有助于使网站更方便用户,更容易浏览,总体上更有可读性。

Istio 官网全新改版,效果如图。

img

网站左下角有中英文切换功能。

img

感谢云原生社区 Istio SIG 翻译和维护了 Istio 官网中文文档。

这项工作由 Google Cloud 赞助,我们要特别感谢 Craig BoxAizhamal Nurmamat kyzy 和 Srinath Padmanabhan 推动这项工作,并感谢所有帮助审查和提供早期修订反馈的人们。

请在 istio.io 资源库上提交问题,给我们任何反馈。

开放我们的设计文件

从 2021 年 5 月 20 日开始,Istio 的设计和规划文件将向互联网上的所有人开放,无需登录。此前,查看这些文件需要谷歌登录和群组成员资格。这一变化将使技术文件的分享更容易、更开放。文件将保持在与以前相同的 URL,但 Community Drive 及其文件夹将改变位置。我们将在本周内联系所有的贡献者和 Drive 成员,并告知新的细节。

弃用

在 1.10 版本中,有两个功能将被废弃。

  • Kubernetes 第一方 JWT 支持(values.global.jwtPolicy=first-party-jwt)将被删除;它的安全性较低,仅用于向后兼容旧版 Kubernetes。
  • values.global.arch 选项已经被 Kubernetes 配置中的 Affinity 设置所取代。

请参阅 1.10 变更说明以了解这些废弃的详细情况。

反馈

如果你已经将你的服务网格升级到 Istio 1.10,我们想听听你的意见!请考虑参加这个简短的(约 2 分钟)调查,以帮助我们了解我们在哪些方面做得好,以及在哪些方面还需要改进。