Service Mesh (ASM) インスタンスを更新または保守する際、自己管理型の Envoy フィルターはバージョンの互換性問題により機能しなくなる可能性があります。Envoy フィルターテンプレートを使用すると、各 ASM バージョンにフィルターが自動的に適応されるため、この問題を解決できます。テンプレートを一度定義し、ワークロードまたは名前空間にバインドすると、ASM がアップグレード時に対応する Envoy フィルターを自動的に作成・維持します。
| アプローチ | バージョン互換性 | 再利用性 | メンテナンス |
|---|---|---|---|
| Envoy フィルターテンプレート | 自動 — ASM インスタンスの更新時にフィルターが自動適応 | 1 つのテンプレートで複数のワークロード向けフィルターを生成 | テンプレートを一度変更すれば、すべてのフィルターが更新 |
| スタンドアロン Envoy フィルター | 手動 — 更新後に確認および修正が必要 | 各フィルターは個別に構成 | 各フィルターを個別に更新 |
主な動作:
テンプレートは設計図であり、Envoy フィルターはそのテンプレートのインスタンスです。テンプレートはトラフィックの処理方法を定義しますが、直接トラフィックには適用されません。
1 つのテンプレートから、異なるワークロードおよび名前空間に複数の Envoy フィルターを生成できます。
テンプレートを変更すると、そのテンプレートから作成されたすべての Envoy フィルターが自動的に更新されます。
テンプレートを削除すると、そのテンプレートから作成されたすべての Envoy フィルターが自動的に削除されます。
ワークロードまたは名前空間からテンプレートのバインドを解除すると、そのスコープに対応する Envoy フィルターが自動的に削除されます。
istio-system名前空間にテンプレートをバインドすると、グローバルに有効になり、他のすべてのワークロードおよび名前空間からのバインドが自動的に解除されます。
前提条件
v1.12.4.0 以降の ASM インスタンスが存在し、少なくとも 1 つのクラスターが追加されていること。詳細については、「ASM インスタンスへのクラスターの追加」および「ASM インスタンスの更新」をご参照ください。
Envoy フィルターテンプレートの作成
ASM コンソールにログインします。左側のナビゲーションウィンドウで、Service Mesh > メッシュ管理 を選択します。
メッシュ管理ページで、ご利用の ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、プラグイン拡張センター > EnvoyFilter テンプレート を選択します。
EnvoyFilter テンプレートの作成 をクリックします。
基本情報セクションで、テンプレートの名前を入力します。
マルチバージョン対応 EnvoyFilter テンプレートセクションで、特定の Istio バージョン向け EnvoyFilter テンプレートの追加 をクリックします。
対応 Istio バージョンドロップダウンリストから Istio バージョンを選択し、フィルターパラメーターを構成して、作成 をクリックします。
説明ASM インスタンスのバージョンが 1.18.0.146 以降の場合、最小バージョン制限なし および 最大バージョン制限なし がデフォルトで選択されています。バージョン範囲を制限する場合は、いずれかのオプションのチェックを外し、特定のバージョンを入力してください。
EnvoyFilter 構成フィールドおよび使用例の詳細については、「Envoy Filter」をご参照ください。
テンプレートは EnvoyFilter テンプレート ページに表示されます。
テンプレートのワークロードまたは名前空間へのバインド
テンプレートを作成した後、1 つ以上のワークロードまたは名前空間にバインドします。これにより、ASM が対応する Envoy フィルターを自動的に作成します。
ワークロードへのバインド
ASM コンソールにログインします。左側のナビゲーションウィンドウで、Service Mesh > メッシュ管理 を選択します。
メッシュ管理ページで、ご利用の ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、プラグイン拡張センター > EnvoyFilter テンプレート を選択します。
該当するテンプレートを見つけ、操作 列の テンプレートの編集 をクリックします。
バインド構成を開きます。
バージョン 1.18.0.146 未満の場合: ワークロードへのテンプレートのバインド タブをクリックし、ワークロードへの EnvoyFilter のバインド をクリックします。
バージョン 1.18.0.146 以降の場合: ワークロードへのテンプレートのバインド セクションまでスクロールします。「EnvoyFilter テンプレートはこのバージョンに対応していますが、対応する EnvoyFilter はまだ作成されていません」というメッセージが表示された場合は、まず 作成 をクリックします。その後、ワークロードへの EnvoyFilter のバインド をクリックします。
ワークロードへの EnvoyFilter のバインド ダイアログボックスで、名前空間 および ワークロードタイプ パラメーターを設定し、未バインド セクションで対象のワークロードの横にある バインド をクリックし、OK をクリックします。
確認するには、左側のナビゲーションウィンドウで プラグイン拡張センター > EnvoyFilter に移動します。自動的に作成された Envoy フィルターが EnvoyFilter ページに表示されます。
名前空間へのバインド
ASM コンソールにログインします。左側のナビゲーションウィンドウで、Service Mesh > メッシュ管理 を選択します。
メッシュ管理ページで、ご利用の ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、プラグイン拡張センター > EnvoyFilter テンプレート を選択します。
該当するテンプレートを見つけ、操作 列の テンプレートの編集 をクリックします。
バインド構成を開きます。
バージョン 1.18.0.146 未満の場合: ワークロードへのテンプレートのバインド タブをクリックし、名前空間への EnvoyFilter のバインド をクリックします。
バージョン 1.18.0.146 以降の場合: ワークロードへのテンプレートのバインド セクションまでスクロールします。「EnvoyFilter テンプレートはこのバージョンに対応していますが、対応する EnvoyFilter はまだ作成されていません」というメッセージが表示された場合は、まず 作成 をクリックします。その後、名前空間への EnvoyFilter のバインド をクリックします。
名前空間への EnvoyFilter のバインド ダイアログボックスで、未バインド セクションで対象の名前空間をクリックし、OK をクリックします。
説明istio-system名前空間にテンプレートをバインドすると、グローバルに有効になります。この場合、他のすべてのワークロードおよび名前空間からのバインドが自動的に解除されます。
確認するには、左側のナビゲーションウィンドウで プラグイン拡張センター > EnvoyFilter に移動します。自動的に作成された Envoy フィルターが EnvoyFilter ページに表示されます。
テンプレートの変更
カスタムテンプレートのみ変更可能です。EnvoyFilter テンプレート ページで ASM プラグイン とラベル付けされたプリセットテンプレートは変更できません。
ASM コンソールにログインします。左側のナビゲーションウィンドウで、Service Mesh > メッシュ管理 を選択します。
メッシュ管理ページで、ご利用の ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、プラグイン拡張センター > EnvoyFilter テンプレート を選択します。
該当するテンプレートを見つけ、操作 列の テンプレートの編集 をクリックします。
テンプレートパラメーターを更新し、テンプレート内容の変更 をクリックします。
このテンプレートから作成されたすべての Envoy フィルターが自動的に更新されます。
テンプレートおよびフィルターのバインド解除または削除
Envoy フィルターを削除するには、そのテンプレートを対象スコープからバインド解除するか、テンプレート自体を削除して関連するすべてのフィルターを削除します。
ワークロードからのテンプレートのバインド解除
EnvoyFilter テンプレート ページで、対象のテンプレートの テンプレートの編集 をクリックします。ワークロードへのテンプレートのバインド タブで、ワークロードへの EnvoyFilter のバインド をクリックします。ダイアログボックスで、バインド済み セクションのワークロードの横にある バインド解除 をクリックし、OK をクリックします。該当ワークロードの Envoy フィルターが自動的に削除されます。
名前空間からのテンプレートのバインド解除
EnvoyFilter テンプレート ページで、対象のテンプレートの テンプレートの編集 をクリックします。ワークロードへのテンプレートのバインド タブで、名前空間への EnvoyFilter のバインド をクリックします。ダイアログボックスで、バインド済み セクションの名前空間をクリックし、OK をクリックします。該当名前空間の Envoy フィルターが自動的に削除されます。
テンプレートの削除
EnvoyFilter テンプレート ページで、該当するテンプレートを見つけ、操作 列の 削除 をクリックします。OK をクリックして確認します。このテンプレートから作成されたすべての Envoy フィルターが自動的に削除されます。