1.19. 扩展
您可以使用 WebAsembly 扩展直接将新功能添加到 Red Hat OpenShift Service Mesh 代理中。这可让您从应用程序中移出更多常见的功能,并使用编译到 WebAssembly 字节代码的单一语言实现它们。
IBM Z 和 IBM Power Systems 不支持 WebAsembly 扩展。
1.19.1. WebAssembly 模块概述
WebAsembly 模块可以在很多平台上运行,包括代理,并有广泛语言支持、快速执行以及沙盒安全模型。
Red Hat OpenShift Service Mesh 扩展是 Envoy HTTP Filters,为它们提供广泛的功能:
- 控制请求和响应的正文和标头。
- 对不在请求路径中的服务(如认证或策略检查)的带外 HTTP 请求。
- 用来相互通信的 sidechannel 数据存储和过滤器队列。
在创建新的 WebAsembly 扩展时,请使用 WasmPlugin API。ServiceMeshExtension API 从 Red Hat OpenShift Service Mesh 版本 2.2 开始已弃用,并将在以后的版本中删除。
编写 Red Hat OpenShift Service Mesh 扩展有两个部分:
- 您必须使用提供 proxy-wasm API 的 SDK 编写扩展,并将其编译到 WebAssembly 模块。
- 然后,您必须将模块打包到容器中。
支持的语言
您可以使用任何编译到 WebAssembly 字节码的语言来编写 Red Hat OpenShift Service Mesh 扩展,但以下语言具有公开 proxy-wasm API 的现有 SDK,以便直接使用它。
语言 | Maintainer | 软件仓库 |
---|---|---|
AssemblyScript | solo.io | |
C++ | proxy-wasm 团队(Istio 社区) | |
Go | tetrate.io | |
Rust | proxy-wasm 团队(Istio 社区) |