扩展和改进的 WebAssemblyHub 将 WebAssembly 的强大功能引入 Envoy 和 Istio
Solo.io 为 Istio 提供的 Wasm 社区合作伙伴工具。
随着组织采用基于 Envoy 的基础设施(如 Istio)来帮助解决微服务通信方面的挑战,他们不可避免地会发现自己需要定制基础设施的某些部分以适应其组织的约束。 WebAssembly (Wasm) 已成为平台扩展的安全、可靠和动态环境。
在最近的 Istio 1.5 发布公告 中,Istio 项目为将 WebAssembly 引入流行的 Envoy 代理奠定了基础。 Solo.io 正在与 Google 和 Istio 社区合作,简化创建、共享和部署 WebAssembly 扩展到 Envoy 和 Istio 的整体体验。不久前,Google 和其他公司为容器奠定了基础,而 Docker 则构建了出色的用户体验使其易于使用。同样,这项工作通过为 Istio 上的 WebAssembly 构建最佳用户体验来使 Wasm 易于使用。
早在 2019 年 12 月,Solo.io 就开始努力通过宣布 WebAssembly Hub 为 WebAssembly 提供出色的开发人员体验。WebAssembly Hub 允许开发人员非常快速地在 C++ 中启动一个新的 WebAssembly 项目(我们正在扩展此语言选择,请参见下文),使用 Bazel 在 Docker 中构建它,并将其推送到符合 OCI 的注册表。从那里,操作员必须拉取模块,并自行配置 Envoy 代理以从磁盘加载它。在 基于 Envoy 构建的 API 网关 Gloo 中的 Beta 支持允许您声明式和动态地加载模块,Solo.io 团队希望为其他基于 Envoy 的框架(如 Istio)带来同样的轻松安全体验。
该领域的创新引起了很多关注,Solo.io 团队一直在努力进一步增强 WebAssembly Hub 及其支持的工作流程的功能。与 Istio 1.5 结合,Solo.io 很高兴地宣布 WebAssembly Hub 的新增强功能,这些增强功能将 WebAssembly 与 Envoy 的生产可用性提升到新的高度,改善开发人员体验,并简化在 Istio 中使用 Wasm 与 Envoy 的流程。
迈向生产环境
Envoy 社区正在努力将 Wasm 支持引入上游项目(目前它位于一个正在开发的分支上),Istio 将 Wasm 支持声明为 Alpha 功能。在 Gloo 1.0 中,我们还宣布了 Wasm 的早期非生产支持。什么是 Gloo?Gloo 是一个现代 API 网关和 Ingress 控制器(基于 Envoy Proxy 构建),支持将传入流量路由和安全地路由到遗留单体、微服务/Kubernetes 和无服务器函数。开发和运维团队能够塑造和控制来自外部最终用户/客户端到后端应用程序服务的流量模式。Gloo 是一个 Kubernetes 和 Istio 原生的 Ingress 网关。
尽管它在每个单独的项目中仍在成熟,但作为社区,我们可以做一些事情来改善生产支持的基础。
第一个领域是标准化 Envoy 的 WebAssembly 扩展的外观。Solo.io、Google 和 Istio 社区已为将 WebAssembly 模块捆绑和分发为 OCI 镜像定义了一个开放规范。此规范为分发任何类型的 Wasm 模块(包括 Envoy 扩展)提供了一个强大的模型。
这是对社区开放的 - 加入这项工作
下一个领域是改善将 Wasm 扩展部署到在生产环境中运行的基于 Envoy 的框架的体验。在 Kubernetes 生态系统中,在生产环境中使用基于声明式 CRD 的配置来管理集群配置被认为是一种最佳实践。新的 WebAssembly Hub Operator 添加了一个单一的声明式 CRD,该 CRD 会自动将 Wasm 过滤器部署并配置到 Kubernetes 集群中运行的 Envoy 代理。此操作员使 GitOps 工作流程和集群自动化能够管理 Wasm 过滤器,无需人工干预或命令式工作流程。我们将在即将发布的博文中提供有关操作员的更多信息。
最后,Wasm 扩展的开发人员与部署它们的团队之间的交互需要某种基于角色的访问权限、组织管理以及共享、发现和使用这些扩展的功能。WebAssembly Hub 添加了团队管理功能,例如权限、组织、用户管理、共享等。
改善开发人员体验
当开发人员希望定位更多语言和运行时时,必须尽可能保持体验简单和高效。多语言支持和运行时 ABI(应用程序二进制接口)目标应在工具中自动处理。
Wasm 的优势之一是能够使用多种语言编写模块。Solo.io 和 Google 之间的合作提供了对用 C++、Rust 和 AssemblyScript 编写的 Envoy 过滤器的开箱即用支持。我们将继续添加对更多语言的支持。
Wasm 扩展使用它们部署到的 Envoy 代理中的应用程序二进制接口 (ABI)。WebAssembly Hub 在 Envoy、Istio 和 Gloo 之间提供了强大的 ABI 版本控制保证,以防止不可预测的行为和错误。您只需担心编写扩展代码。
最后,与 Docker 类似,WebAssembly Hub 将 Wasm 扩展存储和分发为 OCI 镜像。这使得推送、拉取和运行扩展与 Docker 容器一样容易。Wasm 扩展镜像经过版本控制且具有加密安全性,使其能够安全地在本地运行,就像在生产环境中一样。这允许您构建和推送以及在它们拉取和部署镜像时信任源。
WebAssembly Hub 与 Istio
WebAssembly Hub 现在完全自动化了将 Wasm 扩展部署到 Istio(以及其他基于 Envoy 的框架,如 Gloo API 网关)的过程,这些框架安装在 Kubernetes 中。通过此部署功能,WebAssembly Hub 使操作员或最终用户无需手动配置其 Istio 服务网格中的 Envoy 代理以使用其 WebAssembly 模块。
观看以下视频,了解使用 WebAssembly 和 Istio 入门有多么容易
开始使用
我们希望 WebAssembly Hub 成为社区共享、发现和分发 Wasm 扩展的聚集地。通过提供出色的用户体验,我们希望使开发、安装和运行 Wasm 变得更加轻松和有益。加入我们访问 WebAssembly Hub,分享您的扩展和 想法,并参加 即将举行的网络研讨会。