KONGの運用を楽にするKONG Admin API用GUI 「KONGA」

Webサービス開発部の堀です。

 オープンソースのAPI Gateway「Kong」はお使いでしょうか?
弊社のサービスでもKongを使用していますが、各種設定を行うときにKong Admin APIを叩くのではなく、GUIで操作したいと思うときもあります。(自動化する分にはAPIのほうが都合が良いのですが)

公式のGUIというものはありませんが、いくつか非公式のGUIがあります。今回はそのうちの1つ「Konga」をご紹介します。KongaはライセンスがMIT LICENSE、使用ライブラリはBootstrap,AngularJS,Sails.js、サポートしているDBはMySQL,MongoDB,PostgresSQL,SQL Serverと扱いやすい構成になっています。

インストール

必要なパッケージをインストールします。どれもyum/npmで簡単にインストールできます。

Konga本体はgithubからインストールします。

konga/config/に設定ファイルの雛形local_example.jsがありますので、これをコピーしてKong Admin APIのURIとDBを指定します。npm startで起動すると、http://localhost:1337で設定画面が見えるようになります。

Kongaで出来ること

v.70現在でKong Admin APIでの操作は全てサポートしています。ログインすると以下にようなDashboardが表示され、APIの利用状況やKongの情報、Kongに組み込まれているpluginなどを見ることができます。

KongaのDashboard画面

Kong Nodeの登録

ログインアイコンのところにあるメニューリストの「Settings」からKong Nodeの登録ができます。

kong_node-setting

「+ NEW NODE」でノード登録フォームがポップアップしますので、以下の項目を登録します。

 Name : ノード名はユニークでなければならない
 kong admin IP : kongが稼動しているサーバのIPアドレス
 kong admin port : kong用に割り当てたport番号

kong admin IPやkong admin portなどを間違えて登録するとDashboardなどが表示されなくなったりしますので、登録後にDashboardが表示されなくなったときは一度登録内容を確認すると良いでしょう。

正しく登録できていれば、画面上部メニューリストNode Infoで登録したKongの細かい設定を確認できるようになります。

KongaのNode画面

API登録

画面上部メニューリストの「APIs」からAPIの登録ができます。

apis

「+ ADD NEW API」ボタンでノード登録フォームがポップアップしますので、以下の項目を登録します。

 Name : API名
 Requset Host :example.com など
 Request Path : /exampleなどendpointのPath
 Strip Request Path : YESにするとプロキシする前にrequest_path値を削除する。「example/hoge」に対するリクエストは「Upstream URL/hoge」になる
 Preserve HostYESにするとクライアントが送信した元のHostヘッダーを、Upstream URLのホスト名に置き換ずに保持する
 Upstream URL :  プロキシリクエストに使用されるURL

例えば以下のように設定した場合、「/example」とAPIを呼び出すと「http://httpbin.org/」へとアクセスされるようになります。
api-add

Consumer ID登録

画面上部メニューリストの「Consumers」からConsumer登録することができます。リクエスト元によってIP制限をかけたり、特定のAPIにだけOAuth認証かけたりなど、後述のプラグインの適用を細かく分けたりするのに使えます。

consumers

「+ CREATE CONSUMER」でコンシューマ登録用フォームがポップアップしますので、以下の項目を登録します。

 username : コンシューマ名はユニークにする必要がある
 custom_id : usernameが登録されていれば空のままでも問題ない

consumer-add

Plugin設定

画面上部メニューリストの「plugins」からAPIに適用するpluginの設定ができます。設定は全APIへの適用と、Consumer単位の設定ができるようになっています。Kongでサポートされているpluginの説明は、https://getkong.org/plugins/ で確認できます。

plugin-all

例えば、IP制限プラグインを追加したいのであれば、プラグイン登録画面の「Security」を選択し、下図のIP制限プラグインから追加できます。

ip-restriction

まとめ

やや駆け足になりましたが、以上、Kongの運用を楽にするKongaのご紹介でした。
1つ立てておけば複数台のKongを管理でき、運用がとても楽になります。Kongをお使いであればぜひ一度お試しください。