動的なプラグインの順序
Kong Gateway でプラグインが実行される順序は、static priority
によって決まります。名前が示すように、この値は 静的 であり、ユーザーが簡単に変更することはできません。
各プラグインのordering
フィールドを使用する任意のKong Gatewayプラグインの
優先順位を上書きできます。これにより、access
フェーズ中のプラグインの順序が決まり、
プラグイン間の 動的な 依存関係を作成できます。
コンセプト
依存トークン
プラグインへの依存関係を記述するには、次のいずれかのトークンを使用します。
-
before
: プラグインは、指定されたプラグインまたはプラグインのリストの 前 に実行されます。 -
after
: プラグインは、指定されたプラグインまたはプラグインのリストの 後 に実行されます。
フェーズ
リクエストは、Kong Gatewayによって処理される際に、構成済みのプラグインに応じてさまざまな フェーズを通過します。各フェーズでのプラグインの実行順序には調整を加えることができます。
現在、Kong Gatewayはaccess
フェーズの動的なプラグインの順序付けをサポートしています。
API
次の API を使用して、特定のリクエストフェーズ内のプラグインの依存関係を表現できます (例は deck 形式のYAMLです)。
ordering:
$dependency_token:
$supported_phase:
- pluginA
- ...
例えば、PluginAのaccess
フェーズが
PluginB のaccess
フェーズ の前に 実行するには、次のように記述します。
PluginA:
ordering:
before:
access:
- PluginB
既知の制限
コンシューマのスコープ設定
動的なプラグインの順序は、全く異なるサービスとルートのペアに適用されたり、グローバルに実行されている場合でも、 はコンシューマスコープのプラグインと共存できません。
コンシューママッピングと動的プラグインの順序付けはどちらもアクセスフェーズで実行されますが、プラグインの順序はコンシューママッピングが発生した後に決定する必要があります。Kong Gatewayは、コンシューママッピングに関連するプラグインの順序を確実に変更できません。
連鎖的な削除と更新
プラグインが削除されたプラグインと依存関係があるかどうかは検知できないため、構成の処理には慎重を期してください。
パフォーマンスへの影響
動的なプラグインの順序付けでは、リクエスト中にプラグインを並べ替える必要があります。これにより、当然、要求に待機時間が追加されます。場合によっては、高価な認証プラグインの前に流量制限を実行すると、これが補われることがあります。
ワークスペース内のプラグインを並べ替えると、同じワークスペース内の他の すべての プラグインにパフォーマンスの影響があります。可能であれば、プラグインの順序を別のワークスペースにオフロードすることを検討してください。
検証
プラグインの動的順序の検証は簡単な作業ではなく、 ユーザーのビジネスロジックへの洞察が必要になります。Kong Gatewayは、 基本的な間違いは検出できますが、潜在的に危険な構成をすべて検出できるわけではありません。
動的順序を使用する場合は、すべての構成を手動でテストし、この機能の取り扱いには注意してください。
Kong Manager
Kong Managerは、UIを介したプラグインの動的順序付け構成もサポートしています。 詳細については、プラグインの動的順序付けの使用開始を参照してください
参照
動的プラグインの順序付けについては、スタートガイドの例を参照してください。