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 扩展有两个部分:

  1. 您必须使用提供 proxy-wasm API 的 SDK 编写扩展,并将其编译到 WebAssembly 模块。
  2. 然后,您必须将模块打包到容器中。

支持的语言

您可以使用任何编译到 WebAssembly 字节码的语言来编写 Red Hat OpenShift Service Mesh 扩展,但以下语言具有公开 proxy-wasm API 的现有 SDK,以便直接使用它。

表 1.14. 支持的语言

语言Maintainer软件仓库

AssemblyScript

solo.io

solo-io/proxy-runtime

C++

proxy-wasm 团队(Istio 社区)

proxy-wasm/proxy-wasm-cpp-sdk

Go

tetrate.io

tetratelabs/proxy-wasm-go-sdk

Rust

proxy-wasm 团队(Istio 社区)

proxy-wasm/proxy-wasm-rust-sdk