扩展性

WebAssembly 是一种沙盒技术,可以用于扩展 Istio 代理(Envoy)的能力。Proxy-Wasm 沙盒 API 取代了 Mixer 作为 Istio 主要的扩展机制。在 Istio 1.6 中将会为 Proxy-Wasm 插件提供一种统一的配置 API。

WebAssembly 沙盒的目标:

  • 效率 - 这是一种低延迟,低 CPU 和内存开销的扩展机制。
  • 功能 - 这是一种可以执行策略,收集遥测数据和执行有效荷载变更的扩展机制。
  • 隔离 - 一个插件中程序的错误或是奔溃不会影响其它插件。
  • 配置 - 插件使用与其它 Istio API 一致的 API 进行配置。可以动态的配置扩展。
  • 运维 - 扩展可以以仅日志,故障打开或者故障关闭的方式进行访问和部署。
  • 扩展开发者 - 可以用多种编程语言编写。

这个演讲视频是关于 WebAssembly 集成架构的介绍。

高级架构

Istio 扩展(Proxy-Wasm 插件)有几个组成部分:

  • 过滤器服务提供商接口 用于为过滤器构建 Proxy-Wasm 插件。
  • 沙盒 在 Envoy 中嵌入 V8 Wasm 运行时。
  • 主机 API 用于处理请求头,尾和元数据。
  • 调出 API 针对 gRPC 和 HTTP 请求。
  • 统计和记录 API 用于度量统计和监控。

扩展 Istio/Envoy

扩展 Istio/Envoy

例子

这里是用 C++ 为过滤器实现 Proxy-Wasm 插件的例子。

为过滤器实现一个 Proxy-Wasm 插件需要:

SDK

C++ SDK 的详细说明见这里

生态

相关内容

重新定义代理的扩展性:Envoy 和 Istio 引入 WebAssembly

Istio 的扩展中使用 WASM 的前景。