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で簡単にインストールできます。
1 2 |
$ sudo yum install npm $ sudo npm install bower gulp sails -g |
Konga本体はgithubからインストールします。
1 2 3 |
$ git clone https://github.com/pantsel/konga.git $ cd konga $ npm install |
konga/config/に設定ファイルの雛形local_example.jsがありますので、これをコピーしてKong Admin APIのURIとDBを指定します。npm startで起動すると、http://localhost:1337で設定画面が見えるようになります。
1 2 3 4 5 |
$ cd konga/config $ cp -pr local_example.js local.js $ vim local.js $ npm start |
Kongaで出来ること
v.70現在でKong Admin APIでの操作は全てサポートしています。ログインすると以下にようなDashboardが表示され、APIの利用状況やKongの情報、Kongに組み込まれているpluginなどを見ることができます。
Kong Nodeの登録
ログインアイコンのところにあるメニューリストの「Settings」からKong Nodeの登録ができます。
「+ NEW NODE」でノード登録フォームがポップアップしますので、以下の項目を登録します。
Name : ノード名はユニークでなければならない
kong admin IP : kongが稼動しているサーバのIPアドレス
kong admin port : kong用に割り当てたport番号
kong admin IPやkong admin portなどを間違えて登録するとDashboardなどが表示されなくなったりしますので、登録後にDashboardが表示されなくなったときは一度登録内容を確認すると良いでしょう。
正しく登録できていれば、画面上部メニューリストNode Infoで登録したKongの細かい設定を確認できるようになります。
API登録
画面上部メニューリストの「APIs」からAPIの登録ができます。
「+ 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 Host : YESにするとクライアントが送信した元のHostヘッダーを、Upstream URLのホスト名に置き換ずに保持する
Upstream URL : プロキシリクエストに使用されるURL
例えば以下のように設定した場合、「/example」とAPIを呼び出すと「http://httpbin.org/」へとアクセスされるようになります。
Consumer ID登録
画面上部メニューリストの「Consumers」からConsumer登録することができます。リクエスト元によってIP制限をかけたり、特定のAPIにだけOAuth認証かけたりなど、後述のプラグインの適用を細かく分けたりするのに使えます。
「+ CREATE CONSUMER」でコンシューマ登録用フォームがポップアップしますので、以下の項目を登録します。
username : コンシューマ名はユニークにする必要がある
custom_id : usernameが登録されていれば空のままでも問題ない
Plugin設定
画面上部メニューリストの「plugins」からAPIに適用するpluginの設定ができます。設定は全APIへの適用と、Consumer単位の設定ができるようになっています。Kongでサポートされているpluginの説明は、https://getkong.org/plugins/ で確認できます。
例えば、IP制限プラグインを追加したいのであれば、プラグイン登録画面の「Security」を選択し、下図のIP制限プラグインから追加できます。
まとめ
やや駆け足になりましたが、以上、Kongの運用を楽にするKongaのご紹介でした。
1つ立てておけば複数台のKongを管理でき、運用がとても楽になります。Kongをお使いであればぜひ一度お試しください。