WebAssemblyプラグインによるウェイポイントの拡張
Istioは、WebAssembly(Wasm)を使用して機能を拡張する機能6を提供します。Wasm拡張性の主な利点の1つは、拡張機能をランタイム時に動的にロードできることです。このドキュメントでは、Istio内のアンビエントモードをWasm機能で拡張する方法の概要を説明します。アンビエントモードでは、Wasm構成は各名前空間にデプロイされたウェイポイントプロキシに適用する必要があります。
始める前に
アンビエントモードの入門ガイド7の手順に従ってIstioを設定します。
Bookinfoサンプルアプリケーション8をデプロイします。
リクエストを送信するためのテストソースとして、curl10サンプルアプリをデプロイします。
ゲートウェイにて
Kubernetes Gateway APIを使用すると、Istioはサービスメッシュへのトラフィックを管理するための集中エントリポイントを提供します。ゲートウェイレベルでWasmPluginを構成し、ゲートウェイを通過するすべてのトラフィックが拡張された認証ルールに従うようにします。
ゲートウェイ用のWebAssemblyプラグインの構成
この例では、HTTP Basic認証モジュール12をメッシュに追加します。IstioがリモートのイメージレジストリからBasic認証モジュールをプルしてロードするように構成します。このモジュールは/productpage
への呼び出しで実行されるように構成されます。これらの手順は、WebAssemblyモジュールの配布13の手順と似ていますが、ラベルセレクターの代わりにtargetRefs
フィールドを使用する点が異なります。
リモートWasmモジュールでWebAssemblyフィルターを構成するには、bookinfo-gateway
をターゲットとするWasmPlugin
リソースを作成します。
HTTPフィルターは、認証フィルターとしてゲートウェイに挿入されます。Istioエージェントは、WasmPlugin構成を解釈し、リモートのWasmモジュールをOCIイメージレジストリからローカルファイルにダウンロードし、そのファイルを参照してHTTPフィルターをゲートウェイに挿入します。
ゲートウェイ経由のトラフィックの検証
認証情報なしで
/productpage
をテストします。WasmPluginリソースで構成された認証情報を使用して
/productpage
をテストします。
名前空間内のすべてのサービスに対するウェイポイントにて
ウェイポイントプロキシは、Istioのアンビエントモードにおいて、サービスメッシュ内での安全かつ効率的な通信を促進する上で重要な役割を果たします。以下では、Wasm構成をウェイポイントに適用し、プロキシの機能を動的に強化する方法について説明します。
ウェイポイントプロキシのデプロイ
ブックインフォ名前空間にウェイポイントプロキシをデプロイするには、ウェイポイントのデプロイ手順に従ってください。
トラフィックがサービスに到達することを確認します。
ウェイポイント用のWebAssemblyプラグインの構成
リモートWasmモジュールでWebAssemblyフィルターを構成するには、waypoint
ゲートウェイをターゲットとするWasmPlugin
リソースを作成します。
構成されたプラグインの表示
ウェイポイントプロキシ経由のトラフィックの検証
認証情報なしで内部の
/productpage
をテストします。認証情報ありで内部の
/productpage
をテストします。
特定のサービスに対するウェイポイントにて
特定のサービスのリモートWasmモジュールでWebAssemblyフィルターを構成するには、特定のサービスを直接ターゲットとするWasmPluginリソースを作成します。
拡張機能がreviews
サービスのみに適用されるように、reviews
サービスをターゲットとするWasmPlugin
を作成します。この構成では、認証トークンとプレフィックスはレビューサービス専用に調整されており、そのサービスに向けられたリクエストのみがこの認証メカニズムの対象となるようにします。
サービスをターゲットとするトラフィックの検証
汎用的な
waypoint
プロキシで構成された認証情報を使用して、内部の/productpage
をテストします。特定の
reviews-svc-waypoint
プロキシで構成された認証情報を使用して、内部の/reviews
をテストします。認証情報なしで内部の
/reviews
をテストします。
認証情報なしで指定されたコマンドを実行すると、内部の/productpage
へのアクセスが401 Unauthorizedレスポンスになることを検証し、適切な認証情報なしでリソースへのアクセスに失敗するという期待される動作を示します。
クリーンアップ
WasmPlugin構成を削除します。
Istioとサンプルテストアプリケーションを削除するには、アンビエントモードのアンインストールガイドに従ってください。