サービスメッシュ(ASM)では、EnvoyFilterTemplateおよびEnvoyFilterTemplateBinding CustomResourceDefinitions(CRD)を使用してEnvoyフィルターを作成できます。同じEnvoyフィルターテンプレートを使用して複数のEnvoyフィルターを作成し、これらのEnvoyフィルターを異なるワークロードと名前空間に適用できます。これにより、構成を再利用でき、管理効率が向上します。
構成例
次のコードブロックは、EnvoyFilterTemplate CRDを指定しています。このCRDは、Istioバージョンが 1.19 以降のASMインスタンスに適用されるEnvoyフィルターテンプレートのコンテンツを指定します。また、EnvoyFilterTemplateBinding CRDも指定しています。このCRDを使用して、istio-system名前空間で有効になるEnvoyフィルターを作成できます。これは、EnvoyフィルターがASMインスタンスでグローバルに有効になることを示します。Envoyフィルターは、バージョンが 1.20 のすべてのEnvoyプロキシに適用されます。フィルターコンテンツは、EnvoyFilterTemplate CRDで定義されているEnvoyフィルターテンプレートから派生します。このテンプレートは、Istioバージョンが 1.19 以降のASMインスタンスに適用されます。
上記のYAMLコードは、次のEnvoyフィルターを作成します。
EnvoyFilterTemplateフィールドの説明
EnvoyFilterTemplateは、一連のEnvoyフィルターを定義します。これらのEnvoyフィルターは、異なるIstioバージョンに適用されます。セルフマネージドEnvoyフィルターは、インスタンスの更新またはメンテナンス後、ASMインスタンスと互換性がない場合があります。 EnvoyFilterTemplate CRDを使用すると、Istioバージョンごとに異なるEnvoyフィルターをカスタマイズできます。 Envoyプロキシのバージョンをアップグレードした後、アップグレードされたプロキシで適切なEnvoyフィルターを適用できます。これにより、互換性のリスクが軽減されます。
EnvoyFilterTemplateSpec
EnvoyFilterTemplateSpec、つまり上記の例のspecセクションは、EnvoyFilterTemplateの中核となる構成です。
フィールド | タイプ | 必須 | 説明 |
templates | はい | 一連のEnvoyフィルターテンプレート値を指定します。各テンプレート値は、特定のIstioバージョンまたはIstioバージョンの範囲に適用されます。複数のテンプレート値の適用可能なIstioバージョンの範囲は重複できません。 |
TemplateValue
各TemplateValueは、EnvoyフィルターのYAMLコンテンツと、Envoyフィルターの適用可能なIstioバージョンまたはIstioバージョンの範囲を指定します。
フィールド | タイプ | 必須 | 説明 |
istioVersion | string | はい | Envoyフィルターが適用可能なIstioバージョンまたはIstioバージョンの範囲。バージョンは、 1.19 や 1.20 などのIstioマイナーバージョンである必要があります。 2つのバージョンをハイフンでつなぐことで、Envoyフィルターが指定されたバージョンの範囲で有効になることを示すことができます。 Envoyフィルターがバージョンの範囲で有効になるように指定する場合、 例:
|
value | string | はい | EnvoyフィルターのYAMLコンテンツ。 YAMLコンテンツは文字列である必要があり、EnvoyフィルターのCRDフィールドの説明に準拠している必要があります。 TemplateValueフィールドを使用してEnvoyフィルターを定義する場合、metadataフィールドとworkloadSelectorフィールドを構成する必要はありません。 Envoyフィルターを作成すると、EnvoyFilterTemplateBinding CRDに基づいてmetadataフィールドとworkloadSelectorフィールドに自動的に入力されます。 |
EnvoyFilterTemplateBindingフィールドの説明
1つのEnvoyFilterTemplateBinding CRDはEnvoyFilterTemplate CRDに関連付けられており、EnvoyFilterTemplate CRDで定義されているEnvoyフィルターが有効になるワークロードとEnvoyプロキシのバージョンを指定します。
EnvoyFilterTemplateBindingSpec
EnvoyFilterTemplateBindingSpec、つまりspecセクションは、EnvoyFilterTemplateBindingの中核となる構成です。
フィールド | タイプ | 必須 | 説明 |
templateRef | はい | テンプレート参照。 EnvoyFilterTemplateBinding CRDによって参照されるEnvoyFilterTemplate CRDと、バインドされたASMインスタンスのバージョンを指定します。 | |
workloads | いいえ | Envoyフィルターを作成する必要があるワークロードを指定します。 |
EnvoyFilterTemplateRef
フィールド | タイプ | 必須 | 説明 |
name | string | はい | 参照されるEnvoyFilterTemplateの名前。 |
istioVersion | string | はい | Envoyフィルターが有効になるEnvoyプロキシのバージョンを指定します。 バージョンは、 1.19 や 1.20 などのIstioマイナーバージョンである必要があります。 2つのバージョンをハイフンでつなぐことで、Envoyフィルターが指定されたバージョンの範囲で有効になることを示すことができます。 Envoyフィルターがバージョンの範囲で有効になるように指定する場合、 例:
|
WorkloadRef
WorkloadRefは、Envoyフィルターが有効になるワークロードを定義します。
フィールド | タイプ | 必須 | 説明 |
namespace | string | はい | Envoyフィルターが作成される名前空間の名前。 |
name | string | いいえ | ワークロードの名前。この名前は、作成されたEnvoyフィルターの名前の一部です。このフィールドには、サービスまたはデプロイメントの名前を設定することをお勧めします。 Envoyフィルターが名前空間でグローバルに有効になる場合、このパラメーターを指定する必要はありません。 |
kind | string | いいえ | Envoyフィルターがバインドされるワークロードのタイプ。このフィールドは表示目的でのみ使用されます。 |
selector | map<string, string> | いいえ | Envoyフィルターが有効になるポッドを選択する基準となる一連のラベルを指定します。このフィールドは、EnvoyフィルターのworkloadSelectorフィールドに自動的に変換されます。このパラメーターを指定しない場合、作成されたEnvoyフィルターは名前空間全体で有効になります。 |
参照
EnvoyフィルターテンプレートとEnvoyフィルターの操作と関係の詳細については、「Envoyフィルターテンプレートを使用してEnvoyフィルターを作成する」をご参照ください。
ASMは、プラグインマーケットプレイスで追加機能を提供しており、必要に応じてASM機能を拡張できます。ビジネス要件に基づいてさまざまなプラグインを選択およびカスタマイズして、多様なニーズに対応できます。詳細については、「プラグインを有効にしてASM機能を拡張する」をご参照ください。