AWS JAPAN APN ブログ
Kong Konnect Dedicated Cloud Gateway を使用したプライベート API ゲートウェイの構築
本記事は、Kong Inc. Senior Solutions Engineer Wenhan Shi 氏とアマゾン ウェブ サービス ジャパン合同会社 パートナーソリューションアーキテクト 櫻谷 広人による共著です。
この記事では、API 開発・運用に関する課題を解決する一つのツールである、Kong のパートナーソリューション Kong Konnect の概要と、2024 年 4 月にリリースされた新機能を使用したプライベート API ゲートウェイ on AWS の構築方法についてご紹介します。
API にまつわる課題
API は今や多くのシステムにとって欠かせない構成要素となっていますが、その管理と統制の重要性を理解し、適切なリソースを投入できている企業は多くはないかもしれません。API から本来の価値を引き出し、ビジネス上の成果を生むためには、正しい API ライフサイクルマネジメントを行う必要があります。これは、API の要件定義から、設計、開発、テスト、リリース、バージョン管理、監視、ドキュメント化などを含むエンドツーエンドのプロセスです。
適切な API マネジメントを行うことで、開発速度や API の安定性の向上が見込めますが、これらをスクラッチで一から整備するには大変な労力がかかります。これらの付加価値を生まない重労働からエンジニアを解放し、ビジネスのコアなイノベーションにリソースを集中させるためには、エンタープライズグレードの豊富な機能を備えた API マネジメントツールの導入が不可欠です。
Kong Konnect とは
Konnect は、クラウドネイティブ時代に向けてゼロから設計された、API ライフサイクル管理の SaaS プラットフォームです。このプラットフォームを利用することで、モダンなアプリケーションをより優れた形で、より迅速に、そしてより安全に構築することが可能になります。コントロールプレーンは Kong がクラウド上でホストし、データプレーンはお好みのネットワーク環境で自社でホストするか、または Kong がクラウド上で管理するかを選択できます。これらはすべて、Kong の軽量、高速、柔軟な API ゲートウェイである Kong Gateway によって実現されます。
Kong Konnect Dedicated Cloud Gateway
Dedicated Cloud Gateway は、Konnect において Kong が管理するデータプレーンノードです。自社のデータセンターなどでデータプレーンをホストする必要がなく、ゲートウェイインフラのサイズとロケーションを制御できます。これにより、Kong がお客様に代わってノードの自動スケールやアップグレードなどを実施し、運用の複雑さを軽減します。
また、Dedicated Cloud Gateway は AWS 上で public および private ネットワーキングモードをサポートします。public を選択して簡単にアクセスできるようにすることもできますし、お客様のセキュリティ要件に応じて AWS Transit Gateway を利用して private なネットワークを設定することも可能です。
2024 年 8 月時点でサポートされる AWS のリージョンは、東京、シドニー、シンガポール、フランクフルト、アイルランド、ロンドン、オハイオ、オレゴンになります。
Dedicated Cloud Gateway を使用したプライベート API の構築
今回はサンプルとして、Amazon Virtual Private Cloud (Amazon VPC) のプライベートサブネット内で稼働する Amazon Elastic Compute Cloud (Amazon EC2) 上に構築したアプリケーションをターゲットに、Kong Konnect から接続する構成を作成してみます。アプリケーションにインターネットからアクセスすることができない場合でも、AWS Transit Gateway を使用することで、Kong Konnect のネットワークとユーザー所有の AWS アカウントのネットワーク間にプライベートな接続を確立することができます。ゲートウェイ自体もプライベートなタイプが選択できるため、例えば社内向けの完全に閉域に閉じた API プラットフォームを構築することも可能です。
今回は以下の前提条件で作成します。
- AWS リージョン: ap-northeast-1 (Tokyo)
- Kong Gateway のバージョン: 3.7
- API アクセス: プライベート
- Kong Konnect のネットワーク: 10.0.0.0/16
- アプリケーションが稼働するユーザー所有の VPC のネットワーク: 172.16.0.0/16
また、簡略化のためにロードバランサーは使用せず、直接 EC2 のプライベート IP アドレスを使用してアプリケーションにアクセスします。
Kong Gateway の作成
1. Kong Konnect のコンソールにログインし、左メニューの [Gateway Manager] から [New Control Plane] > [Kong Gateway] を選択します。
2. 任意の名前を入力し、[Start Your Data Plane Nodes] は Dedicated Cloud Instances を選択します。Dedicated Cloud Gateway を利用することで、自分でデータプレーンノードを管理する必要がなくなります。
3. 次に、データプレーンノードに関する設定です。バージョンは記事執筆時点で最新の 3.7 を選択し、[Configure Mode] は Autopilot を選択します。これは、トラフィックの量に応じて自動で基盤のインフラストラクチャをスケーリングするオプションです。[Configure Cluster] では、[Provider] に AWS、[Region] に Tokyo (ap-northeast-1) を選択します。
4. 最後に、[API Access] で PRIVATE 選択し、[Create Cluster] をクリックします。
アプリケーションの設定
ユーザー所有の AWS アカウント内に、必要なリソースを構築します。ここでやらなくてはいけないことは、主に以下の 4 つです。
- VPC の作成/設定
- Transit Gateway の作成/設定
- EC2 インスタンスの作成
- アプリケーションの起動
EC2 インスタンスはパブリックサブネットに配置し、インターネットからアクセス可能な Web サーバーを起動しておきます。
リソースが設定できたら、EC2 インスタンスにセッションマネージャーを使って接続し、アプリケーションの動作確認を行います。
ポート番号 80 で Web サーバーが起動しているので、EC2 インスタンスのプライベート IP アドレスを使ってアクセスしてみます。
これを、Kong Gateway 経由でアクセスできるようにするのが最終目標です。
Kong サービス/ルートの設定
Kong Konnect のコンソールに戻って、サービスとルートの設定を行います。まだ Transit Gateway の接続設定は行なっていないため、Kong Gateway からアプリケーションにはアクセスできない状態ですが、一旦この時点で設定を完了させます。
1. 左メニューの [Gateway Manager] で先ほど作成した Kong Gateway を選択した状態で、[Gateway Services] を選択し、[+ New Gateway Service] をクリックします。
2. 任意のサービス名を入力し、[Service Endpoint] には先ほど疎通確認を行った EC2 インスタンスのプライベート IP アドレスを指定します。
3. 作成されたサービスの [Routes] タブを選択し、[+ New Route] をクリックします。
4. 任意のルート名を入力し、[Route Configuration] では、[Paths] に / を入力します。これで、Kong Gateway のルートエンドポイントにリクエストを送信すると、先ほどサービスで定義したエンドポイント (EC2 インスタンスのプライベート IP アドレス) にリクエストがフォワードされるようになります。
Kong Gateway 作成時に [API Access] でプライベートを指定しているため、いまはこのエンドポイントにアクセスすることはできません。続いて Transit Gateway の接続設定を行い、アプリケーションへの接続と、Kong Gateway 自体への接続を可能にしていきます。
Transit Gateway の接続設定
Kong が公開しているドキュメントの手順に沿って進めていきます。
1. AWS マネジメントコンソールに移動し、Resource Access Manager を開きます。[リソース共有を作成] をクリックします。
2. リソースタイプで Transit Gateway を検索し、共有する Transit Gateway リソースを選択します。名前は任意のものを入力します。
3. マネージド型アクセス許可はデフォルトのまま次に進みます。
4. リソースの共有先として、Kong Gateway がデプロイされている AWS アカウントを指定する必要があります。[プリンシパルタイプの選択] で AWS アカウントを選択し、この後確認する AWS アカウント ID を入力して [追加] をクリックします。
AWS アカウント ID は、[Networks] からネットワークを選択して、[Attach Transit Gateway] をクリックすることで確認できます。
5. 確認画面に進み、リソース共有を作成します。
作成が完了したら ARN を控えておきます。この後、Kong Konnect 側の設定で必要になります。
6. 4 でアカウント ID を確認した画面から続けます。先ほど作成したリソース共有 (RAM) の ARN の他に、フォワードしたいネットワークの CIDR (今回は VPC の CIDR)、Transit Gateway の ID (VPC コンソールから確認) を入力し、任意の名前をつけて、[Save] をクリックします。
7. しばらく待つと Transit Gateway のアタッチメントが作成され、承諾待ちの状態になります。AWS マネジメントコンソールに戻り、VPC の [Transit Gateway アタッチメント] のメニューから、作成されたアタッチメントを選択して承諾を行います。
8. VPC のルートテーブルを編集し、Kong Konnect のネットワーク宛の通信を Transit Gateway に向けるようにします。
これで設定は完了です。疎通確認のテストをしてみましょう。
左メニューの [Data Plane Nodes] を選択すると、Kong Gateway のエンドポイントが表示されます。実際の本番利用ではカスタムドメインを設定する場合が多いかと思いますが、今回は簡略化のために、このプライベート IP アドレスのいずれかに直接アクセスしてみます。
curl 10.0.115.71
無事にアクセスすることができました!今回はデモ用にシンプルな設定を採用していますが、本番利用の際は、カスタムドメインの設定、ロードバランサーの配置など、セキュリティ、可用性、運用などの各種要件を満たせるような追加の設定を行うことをおすすめします。
また、このデモでは東京リージョンのみを使用していますが、その他のリージョンも合わせて設定することで、複数リージョンにまたがるグローバル API ゲートウェイを構築することも可能です。
まとめ
Kong Konnect Dedicated Cloud Gateway を利用することで、API 管理に伴う様々なタスクをクラウドにオフロードすることができます。サーバーの監視やパッチ適用、スケーリングなどを意識する必要はありません。また、AWS とのシームレスな統合により、プライベートなネットワークの接続も簡単に確立することができます。開発のライフサイクルを加速し、効率的な API 運用を実現するために、この新機能を試してみてください。
Kong Inc. – パートナースポットライト
Kong Inc. は、世界で最も人気の高いオープンソースの API ゲートウェイおよびマイクロサービス管理プラットフォームである Kong を構築、販売、およびサポートしています。