2020 年的 Istio - 顺风而行

Istio 在 2020 年的愿景声明和路线图。

2020 年 3 月 3 日 | 作者:Istio 团队

Istio 解决人们在运行微服务时遇到的实际问题。即使是非常早期的预发布版本也帮助用户调试其架构中的延迟,提高服务可靠性,并在防火墙后面透明地保护流量。

去年,Istio 项目经历了巨大的增长。在第一季度发布 1.1 版本之前的 9 个月孕育期,我们设定了每季度发布一个版本的目标。我们知道持续且可预测地交付价值非常重要。随着三个版本如期在连续的季度发布,我们很自豪地实现了这一目标。

在此期间,我们改进了构建和测试基础设施,从而提高了质量并简化了发布周期。我们加倍关注用户体验,添加了许多命令以使操作和调试网格更加容易。我们还见证了贡献者和公司的数量出现了巨大增长,最终使我们成为GitHub 前十名增长最快项目榜单中的第 4 名

我们对 Istio 在 2020 年的目标雄心勃勃,并且正在进行许多重大工作,但同时我们坚信良好的基础设施应该是“无聊的”。在生产环境中使用 Istio 应该是一种无缝的体验;性能不应成为问题,升级不应成为事件,复杂的任务应该自动化。通过我们对更强大的扩展性故事的投入,我们认为服务网格领域的创新速度可以加快,而 Istio 可以专注于变得非常“乏味”。下面详细介绍我们在 2020 年的主要工作。

更简洁、更流畅、更快

Istio 从一开始就提供了可扩展性,由名为 Mixer 的组件实现。Mixer 是一个平台,允许自定义适配器充当数据平面和用于策略或遥测的后端之间的中介。Mixer 必然会增加请求的开销,因为它需要扩展程序在进程外运行。因此,我们正在转向一个模型,该模型允许直接在代理中进行扩展。

Istio 的身份验证授权策略已解决了 Mixer 的大多数策略执行用例,这些策略允许您直接在代理中控制工作负载到工作负载和最终用户到工作负载的授权。常见的监控用例也已转移到代理中 - 我们已在代理中引入了支持,用于将遥测数据发送到 Prometheus 和 Stackdriver。

我们的基准测试表明,新的遥测模型显着降低了我们的延迟,并为我们提供了业界领先的性能,延迟和 CPU 消耗均降低了 50%。

Istio 可扩展性的新模型

替换 Mixer 的模型使用 Envoy 中的扩展程序来提供更多功能。Istio 社区正在领导 Envoy 中WebAssembly (Wasm) 运行时的实现,这使我们能够实现模块化、沙盒化且使用20 多种语言中的一种开发的扩展程序。扩展程序可以在代理继续服务流量的同时动态加载和重新加载。Wasm 扩展程序还能够以 Mixer 无法实现的方式扩展平台。它们可以充当自定义协议处理程序并转换通过 Envoy 的有效负载——简而言之,它们可以执行与内置于 Envoy 的模块相同的功能。

我们正在与 Envoy 社区合作,寻找发现和分发这些扩展程序的方法。我们希望使 WebAssembly 扩展程序像容器一样易于安装和运行。我们的许多合作伙伴都编写了 Mixer 适配器,并且我们正在共同将其移植到 Wasm。我们还在开发有关如何编写您自己的扩展程序以进行自定义集成的指南和代码实验室。

通过更改扩展模型,我们还能够删除数十个 CRD。您不再需要为每个与 Istio 集成的软件部件使用唯一的 CRD。

使用“预览”配置配置文件安装 Istio 1.5 不会安装 Mixer。如果您从以前的版本升级或安装“默认”配置文件,为了安全起见,我们仍然保留 Mixer。当使用 Prometheus 或 Stackdriver 进行指标监控时,我们建议您尝试新模式并查看性能提高了多少。

如果您需要,可以保留并启用 Mixer。最终,Mixer 将成为 Istio 的一个单独发布的附加组件,该组件是istio-ecosystem的一部分。

更少的活动部件

我们还在简化其余控制平面的部署。为此,我们将几个控制平面组件合并到一个组件中:Istiod。此二进制文件包含 Pilot、Citadel、Galley 和 sidecar injector 的功能。这种方法改进了 Istio 的许多安装和管理方面,降低了安装和配置的复杂性、维护工作量和问题诊断时间,同时提高了响应速度。请阅读Christian Posta 的这篇文章,了解更多关于 Istiod 的信息。

我们正在将 Istiod 作为 1.5 中所有配置文件的默认值发布。

为了减少每个节点的占用空间,我们正在删除用于分发证书的 node-agent,并将它的功能转移到 istio-agent,istio-agent 已经在每个 Pod 中运行。对于那些喜欢图片的人,我们正在从…

Istio architecture with Pilot, Mixer, Citadel, Sidecar injector
今天的 Istio 架构

转变为…

Istio architecture with Istiod
2020 年的 Istio 架构

在 2020 年,我们将继续投资于入职,以实现“零配置”默认值的最终目标,该目标不需要您更改应用程序的任何配置即可利用 Istio 的大多数功能。

改进的生命周期管理

为了改进 Istio 的生命周期管理,我们转向了基于operator的安装。我们引入了IstioOperator CRD 和两种安装模式

在 2020 年,升级也将变得更容易。我们将添加对 Istio 控制平面“金丝雀”新版本的支持,这允许您在现有版本旁边运行新版本,并逐渐切换您的数据平面以使用新版本。

默认安全

Istio 已经为强大的服务安全提供了基础:可靠的工作负载身份、强大的访问策略和全面的审计日志。我们正在稳定这些功能的 API;许多 Alpha API 正在 1.5 中迁移到 Beta,我们预计它们将在 2020 年底之前全部成为 v1。要了解有关 API 状态的更多信息,请参阅我们的功能页面

网络流量也默认变得更加安全。在许多用户在预览版中启用它之后,自动部署双向 TLS正在成为 Istio 1.5 中的推荐做法。

此外,我们将使 Istio 需要更少的权限并简化其依赖项,从而使其成为更强大的系统。从历史上看,您必须使用 Kubernetes Secrets 将证书挂载到 Envoy,这些证书作为文件挂载到每个代理中。通过利用Secret Discovery Service,我们可以安全地分发这些证书,而无需担心它们被机器上的其他工作负载拦截。此模式将成为 1.5 中的默认模式。

删除 node-agent 不仅简化了部署,还消除了对集群范围的PodSecurityPolicy的需求,进一步改善了集群的安全态势。

其他功能

以下是您可以在 2020 年从 Istio 期望的一些更令人兴奋的事情

从海洋到天空,我们很高兴看到您接下来将 Istio 带到哪里。

分享此帖子