Symfoware

Symfowareについての考察blog

API Gateway「Kong」設定方法の基礎(5-minute Quickstart)

API GatewayのKongをインストールしてみました。
API GatewayのKongをDebian 8にインストール

使い方を見ていきます。
5-minute Quickstart



Kongの操作



Kongの起動


# kong start



Debianの場合は/etc/kong/kong.ymlの設定が読み込まれます。
別の場所の設定ファイルを使用する場合は、「-c [設定ファイル]」オプションを使用。

8000番ポートでapi proxy
8001番ポートで管理用のapiを待ち受ける。


Kongの停止


# kong stop




設定ファイルの再読み込み


# kong reload







APIの追加



APIを追加するには、http://[サーバーIP]:8001/apis/にPOSTリクエストを送信します。

MockbinのAPIを試しに追加してみます。

mockbinというAPI
後で使用するhost名は「mockbin.com」
実体は「http://mockbin.com/」
を作成します。


$ curl -i -X POST \
--url http://192.168.1.101:8001/apis/ \
--data 'name=mockbin' \
--data 'upstream_url=http://mockbin.com/' \
--data 'request_host=mockbin.com'




こんな応答がありました。


HTTP/1.1 201 Created
Date: Wed, 04 May 2016 08:29:40 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Access-Control-Allow-Origin: *
Server: kong/0.8.1

{
    "upstream_url":"http:\/\/mockbin.com\/",
    "created_at":1462350581000,
    "id":"289ac0d8-7813-478c-8e24-c0b0232495cf",
    "name":"mockbin",
    "preserve_host":false,
    "strip_request_path":false,
    "request_host":"mockbin.com"
}



688_01.png


このAPIを使用するには、リクエストヘッダーにHostを指定するようです。
※APIを使用するとき、ポート番号は「8000」です。


$ curl -i -X GET \
--url http://192.168.1.101:8000/ \
--header 'Host: mockbin.com'



mockbinのトップページのHTMLが帰ってきました。

688_02.png





プラグインの有効化



Kongには標準でいくつかのプラグインが用意されています。
https://getkong.org/plugins/

先ほど作成した「mockbin」に対し、「Key Authentication」プラグインを適用してみます。
Key Authentication

追加前、プラウザでhttp://[サーバーIP]:8001/apis/mockbin/pluginsを見てみると、
プラグインの数は0です。

688_03.png


Key Authenticationプラグインを追加


$ curl -i -X POST \
--url http://192.168.1.101:8001/apis/mockbin/plugins/ \
--data 'name=key-auth'



プラグインが追加できたようです。

688_04.png


プラグイン追加前は応答のあったコマンドを再度実行。


$ curl -i -X GET \
--url http://192.168.1.101:8000/ \
--header 'Host: mockbin.com'



401 Unauthorizedでエラーになりました。
ちゃんと認証が必要になっています。

688_05.png





Adding Consumers



ユーザーを追加。
認証後、mockbin APIが使用できるように構成します。

「Jason」というユーザーを追加しました。


$ curl -i -X POST \
--url http://192.168.1.101:8001/consumers/ \
--data "username=Jason"




レスポンスは以下のとおり。


HTTP/1.1 201 Created
Date: Wed, 04 May 2016 08:42:32 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Access-Control-Allow-Origin: *
Server: kong/0.8.1

{
    "username":"Jason",
    "created_at":1462351353000,
    "id":"95298d0d-bf81-4ba4-8d25-af6c586c3164"
}




Jasonユーザーの認証キーを作成します。
ここでは「ENTER_KEY」としていますが、任意の文字列を指定します。


$ curl -i -X POST \
--url http://192.168.1.101:8001/consumers/Jason/key-auth/ \
--data 'key=ENTER_KEY'




応答コード


HTTP/1.1 201 Created
Date: Wed, 04 May 2016 08:44:41 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Access-Control-Allow-Origin: *
Server: kong/0.8.1

{
    "created_at":1462351482000,
    "consumer_id":"95298d0d-bf81-4ba4-8d25-af6c586c3164",
    "key":"ENTER_KEY",
    "id":"6d7c8b01-b599-40d5-919a-8554ba1a785d"
}




リクエストヘッダーに、apikeyとして入力した「ENTER_KEY」を設定。


$ curl -i -X GET \
--url http://192.168.1.101:8000 \
--header "Host: mockbin.com" \
--header "apikey: ENTER_KEY"





これで認証プラグインを追加する前と同じ応答が得られるようになるはずです。

なんとなく使い方がわかってきました。
関連記事

テーマ:サーバ - ジャンル:コンピュータ

  1. 2016/05/04(水) 17:56:02|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:1
  5. | 編集
<<APIサーバー Falcon post,headerの値の取得方法 | ホーム | API GatewayのKongをDebian 8にインストール>>

コメント

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます
  1. 2016/05/19(木) 17:18:54 |
  2. |
  3. #
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1880-bfb32982
この記事にトラックバックする(FC2ブログユーザー)