1.19. 拡張

WebAssembly 拡張機能を使用して、Red Hat Service Mesh プロキシーに直接新しい機能を追加できます。これにより、お使いのアプリケーションから、さらに一般的な機能を移動して、単一の言語で実装して、WebAssembly bytecode にコンパイルできます。

注記

WebAssembly 拡張機能は、IBM Z および IBM Power ではサポートされていません。

1.19.1. WebAssembly モジュールの概要

WebAssembly モジュールは、プロキシーなどの多くのプラットフォームで実行でき、これには、幅広い言語サポート、高速実行、および sandboxed-by-default (デフォルトでサンドボックス化される) セキュリティーモデルが含まれます。

Red Hat OpenShift Service Mesh 拡張機能として Envoy HTTP フィルター を使用でき、幅広い機能を提供します。

  • 要求と応答の本体とヘッダーの操作
  • 認証やポリシーのチェックなど、要求パスにないサービスへの帯域外 HTTP 要求
  • 相互に通信するフィルター用のサイドチャネルデータストレージおよびキュー
注記

新しい WebAssembly 拡張機能を作成するときは、WasmPluginAPI を使用してください。ServiceMeshExtension API は、Red Hat OpenShift Service Mesh バージョン 2.2 で非推奨になり、今後のリリースで削除される予定です。

Red Hat OpenShift Service Mesh 拡張機能の作成には 2 つの部分があります。

  1. proxy-wasm API を公開する SDK を使用して拡張機能を記述し、それを WebAssembly モジュールにコンパイルする必要があります。
  2. 次に、モジュールをコンテナーにパッケージ化する必要があります。

サポートされる言語

WebAssembly バイトコードにコンパイルする言語を使用して Red Hat OpenShift Service Mesh 拡張を作成できますが、以下の言語には proxy-wasm API を公開する既存の SDK があるため、これを直接使用できます。

表1.14 サポートされる言語

言語保守管理者リポジトリー

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