Kongを使用してAPIの管理を効率化しよう
業務を効率化したい えがわ です。
みなさん!API、管理してますか?
最近のソフトウェア開発において、APIの重要性はますます高まっています。
特にマイクロサービスやクラウドネイティブアプリケーションの普及により、APIの数と複雑さは急速に増加しています。
APIの管理に辟易してきているあなた!ピッタリのサービスがあります!
Kongとは?
Kong社が提供するAPIマネジメントプラットフォームです。
APIゲートウェイの機能だけでなく、APIの管理に特化した機能を網羅的に備えています。
高性能API ゲートウェイ
- 低レイテンシーで高スループットなAPI処理
プラグイン拡張性
- 豊富な組み込みプラグイン(認証、セキュリティ、トラフィック制御など)
セキュリティ機能
- OAuth 2.0、JWT、LDAP等の多様な認証方式をサポート
- レート制限、IPレストリクションなどの保護機能
トラフィック制御
- 負荷分散
- サーキットブレーカー
- ヘルスチェック
サービスディスカバリ
- 動的なサービス登録と検出
- 複数のサービスディスカバリ方式をサポート
管理ダッシュボード
- APIとプラグインの設定管理
- トラフィックの可視化と分析
RESTful 管理 API
- プログラマティックな設定と管理
- 自動化とCI/CDパイプラインとの統合が容易
マルチプラットフォーム対応
- オンプレミス、クラウド、コンテナ環境での動作
- Kubernetes との統合
サービスメッシュ機能
- サイドカープロキシとしての機能
- マイクロサービス間通信の最適化
デベロッパーポータル
- APIドキュメントの自動生成と公開
- API利用のセルフサービス管理
やってみる前に
Kongはコントロールプレーンとデータプレーンの2つの主要コンポーネントから構成されています。
コントロールプレーンのSaaSとしてKong Konnect、データプレーンのSaaSとしてCloud Gatewayを提供しています。
今回の実装では、Kong Konnectをコントロールプレーンとして使用し、連携するデータプレーンは自身で構築します。
これにより、KongのAPI管理機能を活用しつつ、クラウドとオンプレミスのハイブリッドな構成が可能です。
やってみる
今回はKongの根幹でもある、APIゲートウェイとプラグインを試していきます。
コントロールプレーンはKong Konnect、データプレーンはローカルにデプロイ、APIはオウム返しをしてくれるAPI(httpbin)を使用します。
コントロールプレーンの設定
Kong Konnectの画面からNew Control Plane
を押下し、Kong Gateway
を選択します。
コントロールプレーンの名前を入力し、データプレーンの起動方法を選択します。
今回はSelf-Managed Hybrid Instances
を選択します。
データプレーンを起動
今回はローカル環境にデータプレンを起動します。
バージョンとプラットフォームを選択すると、起動用のスクリプトが作成可能になります。
Generate certificate
を押下し、スクリプトを作成します。
表示されたスクリプトを実行することでデータプレーンを起動することができます。
起動するとData Plane Node has been found
となります。
サービスを作成
サービスは、Kongがリクエストを転送する先のバックエンドシステム(例えば、APIやウェブアプリケーション)を指します。
Kongがどこにリクエストを送るかを教えるための設定です。
Gateway Service
のNew Gateway Service
からサービスを作成することができます。
Upstream URL
にバックエンドシステムを指定します。
オウム返ししてくれるサービス「httpbin」を指定します。
ルートを追加
ルートは、特定のURLパターンやHTTPメソッドに基づいてリクエストを適切なサービスに振り分ける役割です。
作成するには名前とPathを設定します。
接続確認
ルートの追加が完了したので、確認してみます。
データプレーンにリクエストを実行してみます。
想定通りのレスポンスが返ってきました。
プラグインについて
プラグインは、リクエストやレスポンスの処理をカスタマイズするための追加機能です。
認証、ログ、レート制限、キャッシングなどの機能を簡単に追加できます。
プラグインは、特定のサービスやルート、あるいは全体に対して適用することができます。
現状はPC -> Kong -> httpbin
とKongはプロキシサーバーの役割にしかなっていません。
Kongのプラグインを追加することで、付加機能を簡単に実装することができます。
Rate Limitを追加
今回はRate Limit
を追加していきます。
ルート画面のプラグインタブでNew Plugin
を押下します。
Rate Limiting
を選択します。
今回はMinuteに3を入力し、同一のユーザーは1分間に3回のみ受け付けるようにしてみます。
プラグインを追加したので、動きを確認してみます。
4回リクエストを行うと、エラーになりました。
他のプラグイン
他にも多くのプラグインが用意されています。
今回はRate Limiting
を追加しましたが、Rate Limiting Advanced
など、より詳細に設定が可能なプラグインもあります。
※Enterpriseプランが必要なプラグインもあります。
最後に
KongはAPIの管理をシンプルかつ効率的に行うための強力なサービスです。
サービス、ルート、プラグインを理解することで、API管理の煩雑さを解消し、運用コストを大きく削減することができます。
この記事がどなたかの参考になれば幸いです。