Envoy フィルターテンプレートから Envoy フィルターを作成し、1 つのフィルター構成を Service Mesh (ASM) 内の複数のワークロードと名前空間に適用します。テンプレートを介して Envoy フィルターを管理することで、構成の再利用性が向上し、メッシュバージョンのアップグレード時にもフィルターの整合性が保たれ、手動メンテナンスの複雑さと潜在的なエラーが軽減されます。
前提条件
ASM インスタンスにクラスターを追加済みであること。
ASM インスタンスがバージョン 1.12.4.0 以降であること。ASM インスタンスのアップグレード手順については、「ASM インスタンスのアップグレード」をご参照ください。
Envoy フィルターテンプレートと Envoy フィルター
Envoy フィルターテンプレートと Envoy フィルターは、抽象化とインスタンス化のペアを形成します。テンプレートは、実際に実行される Envoy フィルターを作成するために必要な構成とパラメーターを指定する設計図です。
Envoy フィルターテンプレート — Envoy フィルターを作成するために必要なすべてのルールとパラメーターテンプレートを含む、事前定義された構成構造です。テンプレートは、Envoy プロキシを通過するトラフィックの処理方法を定義しますが、テンプレート自体はトラフィックに適用されません。
Envoy フィルター — テンプレートから作成され、サービスメッシュ内の Envoy プロキシに適用される構成エンティティです。プロキシを通過するトラフィックをフィルタリングおよび処理します。Envoy フィルターはテンプレートの具体的なインスタンスであり、テンプレートのルールとパラメーターを実際のサービストラフィックに適用します。
Envoy フィルターにはバージョン互換性のリスクがあるため、独自に作成した Envoy フィルターは、メッシュのアップグレードとメンテナンスを大幅に困難にします。ASM 1.12.4.0 以降では、Envoy フィルターテンプレートを管理することで Envoy フィルターを作成できます。Service Mesh インスタンスがアップグレードされると、Envoy フィルターテンプレートは適合バージョンに基づいて、対応する Envoy フィルターを自動的に作成または変更します。これにより、Envoy フィルターのバージョン互換性リスクが制御され、使用のハードルが下がります。
バインドによってテンプレートがインスタンス化されます。ASM は、バインドする各ワークロードまたは名前空間に対して、対応する Envoy フィルターを自動的に作成します。そのため、1 つの Envoy フィルターテンプレートを複数のワークロードと名前空間にバインドし、そこから複数の Envoy フィルターを作成できます。
ステップ 1: Envoy フィルターテンプレートの作成
ASM コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。表示されるページで、[envoyfilter テンプレートの作成] をクリックします。
作成 ページの 基本情報 セクションで、Envoy フィルターテンプレートの名前を入力します。
複数バージョン対応 Envoy フィルターテンプレート セクションで、Envoy フィルターテンプレート対応バージョンの追加 をクリックし、Istio 対応バージョン を選択し、そのバージョンに適合する Envoy フィルターの内容を入力してから、作成 をクリックします。
ASM インスタンスがバージョン 1.18.0.146 以降の場合、下限なし セクションでは、メジャーバージョンの上限なし と Istio 対応バージョン がデフォルトで選択されています。Istio バージョン範囲をカスタマイズするには、下限なし または メジャーバージョンの上限なし のチェックを外してから、カスタムバージョンを入力します。
Envoy フィルターの構成例とフィールドの説明については、「」「Envoy Filter」をご参照ください。
新しい Envoy フィルターテンプレートが Envoy フィルターテンプレート ページに表示されることを確認します。
ステップ 2: Envoy フィルターテンプレートをワークロードまたは名前空間にバインド
Envoy フィルターテンプレートをワークロードまたは名前空間にバインドすることで、Envoy フィルターがそのワークロードまたは名前空間でのみ有効になります。開始する前に、次の 2 つの点を決定します。
バインド範囲 — Envoy フィルターが単一のワークロードで有効になる必要がある場合は、ワークロードをバインドします。Envoy フィルターが名前空間全体で有効になる必要がある場合は、名前空間をバインドします。
istio-system名前空間をバインドすると、Envoy フィルターがグローバルに有効になります。ASM インスタンスバージョン — バインド用のコンソールのエントリポイントは、1.18.0.146 より前のインスタンスと 1.18.0.146 以降のインスタンスで異なります。ASM インスタンスのバージョンを確認してから、対応する手順に従ってください。
ASM インスタンスバージョン 1.18.0.146 より前
Envoy フィルターテンプレートをワークロードにバインド
ASM コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
Envoy フィルターテンプレート ページで、バインドする Envoy フィルターテンプレートを見つけ、テンプレートの編集 列の 操作 をクリックします。
Envoy フィルターテンプレートの編集 ページで、ワークロードのアタッチ タブをクリックしてから、ワークロードのアタッチ をクリックします。
ワークロードのアタッチ ダイアログボックスで、名前空間 と ワークロードタイプ を選択し、アタッチ セクションでバインドするワークロードの右側にある 未アタッチ をクリックしてから、OK をクリックします。
Envoy フィルターが作成されたことを確認します。メッシュ詳細ページの左側メニューで、[プラグイン拡張センター] > [EnvoyFilter] を選択します。自動的に作成された Envoy フィルターが Envoy フィルター (Envoy Filter) ページに表示されます。
Envoy フィルターテンプレートを名前空間にバインド
ASM コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
Envoy フィルターテンプレート ページで、バインドする Envoy フィルターテンプレートを見つけ、テンプレートの編集 列の 操作 をクリックします。
Envoy フィルターテンプレートの編集 ページで、ワークロードのアタッチ タブをクリックしてから、名前空間のアタッチ をクリックします。
未アタッチ ダイアログボックスの 名前空間のアタッチ セクションで、バインドする名前空間の名前をクリックしてから、OK をクリックします。
警告istio-system名前空間をバインドすると、Envoy フィルターがグローバルに有効になり、作成済みの他のすべてのバインドが自動的にバインド解除されます。続行する前に、istio-systemをバインドするかどうかを確認してください。Envoy フィルターが作成されたことを確認します。メッシュ詳細ページの左側メニューで、[プラグイン拡張センター] > [EnvoyFilter] を選択します。自動的に作成された Envoy フィルターが Envoy フィルター (Envoy Filter) ページに表示されます。
ASM インスタンスバージョン 1.18.0.146 以降
Envoy フィルターテンプレートをワークロードにバインド
ASM コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
Envoy フィルターテンプレート ページで、バインドする Envoy フィルターテンプレートを見つけ、テンプレートの編集 列の 操作 をクリックします。
Envoy フィルターテンプレートの編集 ページの下部にある ワークロードのアタッチ セクションを確認します。
ページに [テンプレートはこのバージョンに対応済みですが、このバージョンのデータプレーンに適用する Envoy フィルターが未作成です。] というメッセージが表示されている場合は、右側の 作成 をクリックします。
ワークロードのアタッチ セクションで、ワークロードのアタッチ をクリックします。ワークロードのアタッチ ダイアログボックスで、名前空間 と ワークロードタイプ を選択します。操作 セクションの 未アタッチ 列で、バインドするワークロードの アタッチ をクリックしてから、OK をクリックします。
Envoy フィルターが作成されたことを確認します。メッシュ詳細ページの左側メニューで、[プラグイン拡張センター] > [EnvoyFilter] を選択します。自動的に作成された Envoy フィルターが Envoy フィルター (Envoy Filter) ページに表示されます。
Envoy フィルターテンプレートを名前空間にバインド
ASM コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
Envoy フィルターテンプレート ページで、バインドする Envoy フィルターテンプレートを見つけ、テンプレートの編集 列の 操作 をクリックします。
Envoy フィルターテンプレートの編集 ページの下部にある ワークロードのアタッチ セクションを確認します。
ページに [テンプレートはこのバージョンに対応済みですが、このバージョンのデータプレーンに適用する Envoy フィルターが未作成です。] というメッセージが表示されている場合は、右側の 作成 をクリックします。
ワークロードのアタッチ セクションで、名前空間のアタッチ をクリックします。未アタッチ ダイアログボックスの 名前空間のアタッチ セクションで、バインドする名前空間の名前をクリックしてから、OK をクリックします。
警告istio-system名前空間をバインドすると、Envoy フィルターがグローバルに有効になり、作成済みの他のすべてのバインドが自動的にバインド解除されます。続行する前に、istio-systemをバインドするかどうかを確認してください。Envoy フィルターが作成されたことを確認します。メッシュ詳細ページの左側メニューで、[プラグイン拡張センター] > [EnvoyFilter] を選択します。自動的に作成された Envoy フィルターが Envoy フィルター (Envoy Filter) ページに表示されます。