旧バージョンのドキュメントを参照しています。 最新のドキュメントはこちらをご参照ください。
Kong Pluginsについて
プラグインとは何か
Kong Gatewayは、一般的に プラグイン と呼ばれるモジュールを読み込んで実行するために設計されたLuaアプリケーションです。プラグインは高度な機能を提供し、Kong Gatewayの使用を拡張するため、実装により多くの機能を追加できるようになります。
Kong は、Kong GatewayとKonnectにバンドルされる一連の標準Luaプラグインを提供します。アクセスできるプラグインのセットは、ライセンスティアによって異なります。
カスタムプラグインを開発して、Kong Gatewayに独自のカスタム機能を追加することもできます。
スコーププラグイン
環境のニーズに応じて、さまざまな文脈においてプラグインを実行できます。各プラグインはグローバルに実行することも、以下の組み合わせに拡大することもできます。
- サービス
- ルート
- コンシューマ
- コンシューマグループ
スコープを使用すると、リクエストがバックエンドサービスに送信される前、あるいは応答を受信した後など、Kongが環境内で関数を処理する方法をカスタマイズできます。たとえば、プラグインを1つのルートに適用した場合、そのプラグインは、リクエストがシステムを通過する特定のパスでのみトリガーされます。 一方、プラグインをグローバルに適用すると、他の構成に関係なく、すべてのリクエストで実行されます。
グローバルスコープ
サービス、ルート、コンシューマ、またはコンシューマグループに関連付けられていないグローバルプラグインはグローバルと見なされ、他の構成に関係なく、すべてのリクエストで実行されます。
- 自己管理型のKong Gateway Enterpriseでは、プラグインは特定のワークスペース内のすべてのエンティティに適用されます。
- 自己管理型 Kong Gateway (OSS) では、プラグインは環境全体に適用されます。
- Konnectでは、プラグインは特定のコントロールプレーン(CP)内のすべてのエンティティに適用されます。
すべてのプラグインはこれらのスコープのサブセットをサポートします。
各プラグインでサポートされているすべてのスコープについては、スコープ互換性リファレンスを参照してください。
優先順位
1つのプラグインインスタンスは1つのリクエストにつき、常に 1回 実行されます。実行される際の構成は、プラグインが構成されているエンティティによって異なります。プラグインは、さまざまなエンティティ、エンティティの組み合わせ、またはグローバルにも構成できます。これは、たとえばほとんどのリクエストに対しては特定の方法でプラグインを設定したいけれど、 認証されたリクエスト に対しては多少異なる動作にしたい場合に役立ちます。
したがって、構成が異なるさまざまなエンティティに適用された場合、プラグインを実行する優先順位が存在します。特定のプラグインに構成されているエンティティの数は、そのプラグインの優先度に直接相関します。プラグインが構成されているエンティティの数が多いほど、優先順位が高くなります。
複数のエンティティに設定されたプラグインの完全な優先順位は次のとおりです。
- コンシューマ + ルート + サービス :最も優先度が高く、特定のルートとサービス上の特定のコンシューマからの認証されたリクエストに影響します。
- コンシューマグループ + サービス + ルート : 特定のサービスおよびルートにわたる認証ユーザーのグループに影響します。
- コンシューマ + ルート : 特定のルート上の特定のコンシューマからの認証されたリクエストをターゲットにします。
- コンシューマ + サービス : 指定されたサービス内の任意のルートにアクセスする特定のコンシューマから認証されたリクエストに適用されます。
- コンシューマグループ + ルート : 特定のルート上の認証されたユーザーのグループに影響します。
- コンシューマグループ + サービス :認証済みユーザーグループ向けの特定サービス内のすべてのルートに適用されます。
- ルート + サービス : 特定のルートとサービスを利用するすべてのコンシューマを対象とします。
- コンシューマ : すべてのルートとサービスにわたる、認証された特定のコンシューマからのすべてのリクエストに適用されます。
- コンシューマグループ : 認証されたユーザーの指定されたグループのすべてのルートとサービスに影響します。
- ルート :指定されたルート専用。
- サービス :特定のサービス
- グローバルに設定されたプラグイン : 優先順位が最も低く、コンシューマのステータスに関わらず、すべてのサービスとルートに渡りすべてのリクエストに適用されます。
コンシューマグループの優先順位に関する注意 : コンシューマが2つのコンシューマグループのメンバーであり、それぞれにスコープ設定されたプラグインがある場合、Kong Gateway はこれらのプラグインの 1 つのみを実行することで、動作を決定します。ただし、この動作を制御する特定のルールは定義されておらず、将来のリリースで変更される可能性があります。
デプロイメントタイプとのプラグインの互換性
Kong Gateway はさまざまな方法でデプロイでき、すべてのプラグインが各モードと完全に互換性があるわけではありません。比較については、プラグインの互換性を参照してください。
カスタムプラグイン
カスタムプラグインの開発
Kongは、プラグイン開発キット(PDK)、データベースの抽象化、移行など、プラグインを開発するための開発環境全体を提供します。
プラグインは、PDKを介してリクエストオブジェクト/レスポンスオブジェクトまたはストリームと対話するモジュールで構成され、任意のロジックを実装します。Kongは、次の言語でPDKを提供しています。
これらのPDKは、プラグインとKongのコア(または他のコンポーネント)との間の相互作用を容易にするためにプラグインが使用できる関数のセットです。
独自のプラグインの作成を開始するには、入門ガイドのドキュメントを確認してください。 または次の参考文献を参照してください。
サードパーティのプラグイン
サードパーティとのパートナーシップを通して、Kong は Kong Plugin Hub にサードパーティのカスタムプラグインをいくつかリストしています。 これらのプラグインは Kong パートナーによって管理されています。 自作のプラグインを Kong Plugin Hub で紹介したい場合は、Kong のパートナーになることをお勧めします。
関連項目
- Kong Plugin Hub:すべてのKongバンドルプラグインとパートナープラグイン
参考資料
プラグインのライセンスおよび価格のティア