Kong API Gateway はリクエストをどのように受信・ルーティングし、プラグインを実行してUpstreamへ転送しているのか。内部構造とリクエスト処理ライフサイクルを実証・解説します。
クライアントから届いたリクエストは、Nginxの各フェーズでKongのLuaプラグインを順次通過します
TLSハンドシェイク時にSNIに基づき動的証明書を選択
ルーティング判定前の早期URL書換えとリダイレクト
Route照合、Consumer認証、Rate Limit、認可チェック
Upstream Targetのヘルスチェックと負荷分散アルゴリズム
Upstream応答の加工、内部Serverヘッダー削除、セキュリティヘッダー付与
クライアント応答後に非同期でアクセスログ送信(レイテンシ影響ゼロ)
Kongでは「どこへ転送するか」と「どのリクエストを受け付けるか」を明確に分離します。
api.kong.learning..., Path: /v1/echo, Method: GET)。一致しないものは即座に 404 Not Found。https://httpbin.org/anything、タイムアウト値、リトライ回数)。プラグインは Global / Service / Route / Consumer の4階層でアタッチできます。
lua_shared_dict(メモリ上)で原子的に加算され、超低遅延で判定されます。実際にリクエストを送信し、KongのAccessフェーズ(Rate Limit)やFilterフェーズ(Header加工)の挙動を観測できます
※ アドレスを知っているメンバーのみがアクセスできる難読化エンドポイント(api-demo-e8f2c1.kong.learning.chu-jo.com)です。
Waiting for request...
Click [単発リクエスト] to test the live Gateway.
Kong Gateway の2大運用アーキテクチャの差異と動作原理
| 項目 | DB-less モード (宣言型) | DB モード (PostgreSQL) |
|---|---|---|
| 設定の持ち方 | kong.yml を起動時にメモリへ一括ロード |
PostgreSQL に保持し、ポーリングで同期 |
| Admin API の挙動 | 読み取り専用(設定変更はYAMLを再ロード) | CRUD 操作で即時設定追加・更新が可能 |
| Control Plane / Data Plane | 単一コンテナで完結。インフラが極めてシンプル | CP(管理)と複数のDP(中継)で分散管理が可能 |
| 向いている用途 | GitOps、CI/CD、Kubernetes Ingress、ローカル実習 | 管理GUI(Kong Manager)、動的認証キー登録、マルチテナント |