Kongを使用してAPIの管理を効率化しよう

Kongを使用してAPIの管理を効率化しよう

Clock Icon2024.08.13

業務を効率化したい えがわ です。

みなさん!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_api_management_15

コントロールプレーンの設定

Kong Konnectの画面からNew Control Planeを押下し、Kong Gatewayを選択します。

kong_konnect_api_management_01

コントロールプレーンの名前を入力し、データプレーンの起動方法を選択します。
今回はSelf-Managed Hybrid Instancesを選択します。

kong_konnect_api_management_07

データプレーンを起動

今回はローカル環境にデータプレンを起動します。

バージョンとプラットフォームを選択すると、起動用のスクリプトが作成可能になります。

kong_konnect_api_management_03

Generate certificateを押下し、スクリプトを作成します。

kong_konnect_api_management_02

表示されたスクリプトを実行することでデータプレーンを起動することができます。
起動するとData Plane Node has been foundとなります。

kong_konnect_api_management_04

サービスを作成

サービスは、Kongがリクエストを転送する先のバックエンドシステム(例えば、APIやウェブアプリケーション)を指します。
Kongがどこにリクエストを送るかを教えるための設定です。

Gateway ServiceNew Gateway Serviceからサービスを作成することができます。

kong_konnect_api_management_14

Upstream URLにバックエンドシステムを指定します。
オウム返ししてくれるサービス「httpbin」を指定します。

ルートを追加

ルートは、特定のURLパターンやHTTPメソッドに基づいてリクエストを適切なサービスに振り分ける役割です。

作成するには名前とPathを設定します。

kong_konnect_api_management_08

接続確認

ルートの追加が完了したので、確認してみます。

データプレーンにリクエストを実行してみます。

kong_konnect_api_management_06

想定通りのレスポンスが返ってきました。

プラグインについて

プラグインは、リクエストやレスポンスの処理をカスタマイズするための追加機能です。
認証ログレート制限キャッシングなどの機能を簡単に追加できます。
プラグインは、特定のサービスやルート、あるいは全体に対して適用することができます。

現状はPC -> Kong -> httpbinKongはプロキシサーバーの役割にしかなっていません。
Kongのプラグインを追加することで、付加機能を簡単に実装することができます。

Rate Limitを追加

今回はRate Limitを追加していきます。

ルート画面のプラグインタブでNew Pluginを押下します。

kong_konnect_api_management_09

Rate Limitingを選択します。

kong_konnect_api_management_10

今回はMinuteに3を入力し、同一のユーザーは1分間に3回のみ受け付けるようにしてみます。

kong_konnect_api_management_11

プラグインを追加したので、動きを確認してみます。

4回リクエストを行うと、エラーになりました。

kong_konnect_api_management_12

他のプラグイン

他にも多くのプラグインが用意されています。

https://docs.konghq.com/hub/

今回はRate Limitingを追加しましたが、Rate Limiting Advancedなど、より詳細に設定が可能なプラグインもあります。
※Enterpriseプランが必要なプラグインもあります。

最後に

KongはAPIの管理をシンプルかつ効率的に行うための強力なサービスです。
サービス、ルート、プラグインを理解することで、API管理の煩雑さを解消し、運用コストを大きく削減することができます。
この記事がどなたかの参考になれば幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.