可扩展性
WebAssembly 是一种沙箱技术,可用于扩展 Istio 代理(Envoy)。Proxy-Wasm 沙箱 API 替代了 Mixer,成为 Istio 中主要的扩展机制。
WebAssembly 沙箱目标
- 效率 - 扩展添加低延迟、CPU 和内存开销。
- 功能 - 扩展可以强制执行策略、收集遥测数据和执行有效负载变异。
- 隔离 - 一个插件中的编程错误或崩溃不会影响其他插件。
- 配置 - 插件使用与其他 Istio API 一致的 API 进行配置。扩展可以动态配置。
- 操作员 - 扩展可以作为仅日志、故障打开或故障关闭进行金丝雀发布和部署。
- 扩展开发人员 - 插件可以使用多种编程语言编写。
这个 视频演讲 介绍了 WebAssembly 集成的架构。
高级架构
Istio 扩展(Proxy-Wasm 插件)包含多个组件
- 过滤器服务提供者接口 (SPI) 用于为过滤器构建 Proxy-Wasm 插件。
- 沙箱 嵌入 Envoy 中的 V8 Wasm 运行时。
- 主机 API 用于标头、尾部和元数据。
- 调用 API 用于 gRPC 和 HTTP 调用。
- 统计和日志 API 用于指标和监控。
示例
可以在 这里 找到用于过滤器的 C++ Proxy-Wasm 插件示例。您可以按照 本指南 使用 C++ 实现 Wasm 扩展。