kong-dashboard 小記
測試環境
kong: 0.10.3
kong-dashboard: v2
kong-dashboard
因為 kong 是文字介面, 為了有 GUI 介面所以就找相關的開源專案來試試看
- Listen port 預設 8080
Github 網頁
kong-dashboard on dockerhub
我是使用 docker 方式來進行
kong-dashboard 要配合 kong 的版本
- 0.10.x 以上的版本要使用 kong-dashboard V2 以上的版本
安裝方式
無驗證方式
# docker run -d -p 8080:8080 pgbi/kong-dashboard:v2
執行之後的畫面
在 Kong node URL 輸入 Kong node 所在位置
例如 http://YOUR_KONG_IP:8001
點選 SAVE
kong-dashboard 畫面
接下來就可以針對 Plugins 來進行增加 Plugins, 或是新增 APIs
測試 新增 API
點選 Manage APIs
點選 ADD API
接下來進入設定畫面
欄位說明
Name: 識別管理
Hosts: 真正提供服務的 FQDN
Uris: ( Host and Uris 至少要填一個 )( optional )
Methods: 限制 API 行為, GET or POST
Upstream url: API 根目錄路徑 例如 http://ipgod.nchc.org.tw/api/3/action
Strip uri: 如果勾選, 可以限制 uris 行為
原來的作法
> curl http://ipgod.nchc.org.tw/api/3/action/tag_list
{"help": "http://ipgod.nchc.org.tw/api/3/action/help_show?name=tag_list", "success": true, "result": ["aqi", "eco", "GMP\u85e5\u5ee0", "OpenData", "Sensor", "test", "\u4f5c\u696d\u57fa\u91d1\u6703\u8a08\u5831\u8868", "\u5168\u90e8\u8cc7\u6599\u96c6", "\u5e38\u898b\u6feb\u7528\u7ba1\u5236\u85e5\u54c1", "\u6708\u5831", "\u672c\u7ad9\u6e05\u55ae", "\u6838\u51c6\u5291\u578b", "\u6feb\u7528\u7ba1\u5236\u85e5\u54c1", "\u74b0\u4fdd", "\u7a7a\u6c59", "\u7ba1\u5236\u85e5\u54c1", "\u85e5\u54c1\u88fd\u9020\u8a31\u53ef\u7de8\u865f", "\u98df\u54c1\u5b89\u5168", "\u98df\u54c1\u5b89\u5168\u7ba1\u5236\u7cfb\u7d71", "\u9910\u98f2\u696d", "\u9910\u98f2\u696d\u98df\u54c1\u5b89\u5168\u7ba1\u5236\u7cfb\u7d71"]}
這樣可讀性比較低, 使用之前裝的 underscore 來處理
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 699 100 699 0 0 7141 0 --:--:-- --:--:-- --:--:-- 7206
{
"help": "http://ipgod.nchc.org.tw/api/3/action/help_show?name=tag_list",
"success": true,
"result": [
"aqi",
"eco",
"GMP藥廠",
"OpenData",
"Sensor",
"test",
"作業基金會計報表",
"全部資料集",
"常見濫用管制藥品",
"月報",
"本站清單",
"核准劑型",
"濫用管制藥品",
"環保",
"空汙",
"管制藥品",
"藥品製造許可編號",
"食品安全",
"食品安全管制系統",
"餐飲業",
"餐飲業食品安全管制系統"
]
}
確認 kong API
http://YOUR_KONG_IP:8001/apis
http://YOUR_KONG_IP:8000
還沒建立 API 之前, 使用 kong 來呼叫 API
> curl -i -X GET http://YOUR_KONG_IP:8000/tag_list -H 'Host: ipgod.nchc.org.tw'
HTTP/1.1 404 Not Found
Date: Sun, 12 Nov 2017 08:47:34 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Server: kong/0.10.3
{"message":"no API found with those values"}
嘗試加入相關設定
加入 Name / Hosts / Upstream url
確認 api 有被加進去
> curl http://YOUR_KONG_IP:8001/apis | underscore print
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 397 0 397 0 0 346 0 --:--:-- 0:00:01 --:--:-- 346
{
"data": [
{
"http_if_terminated": true,
"id": "d54b1a02-d7ac-45d4-a01f-405e7c38052d",
"upstream_read_timeout": 60000,
"preserve_host": false,
"created_at": 1510477097000,
"upstream_connect_timeout": 60000,
"upstream_url": "http://ipgod.nchc.org.tw/api/3/action",
"strip_uri": true,
"https_only": false,
"name": "ipgod_tag_list",
"retries": 5,
"upstream_send_timeout": 60000,
"hosts": ["ipgod.nchc.org.tw"]
}
],
"total": 1
}
再次測試
> curl http://YOUR_KONG_IP:8000/tag_list -H 'Host: ipgod.nchc.org.tw' | underscore print
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 699 100 699 0 0 485 0 0:00:01 0:00:01 --:--:-- 484
{
"help": "http://ipgod.nchc.org.tw/api/3/action/help_show?name=tag_list",
"success": true,
"result": [
"aqi",
"eco",
"GMP藥廠",
"OpenData",
"Sensor",
"test",
"作業基金會計報表",
"全部資料集",
"常見濫用管制藥品",
"月報",
"本站清單",
"核准劑型",
"濫用管制藥品",
"環保",
"空汙",
"管制藥品",
"藥品製造許可編號",
"食品安全",
"食品安全管制系統",
"餐飲業",
"餐飲業食品安全管制系統"
]
}
- -H : header
- 對應 KONG API 內的Hosts 欄位
- http://YOUR_KONG_IP:port
- tag_list
- 官方 api 原先的服務, 所以也可以換成其他的 api, 例如 package_list
完成之後的畫面
未來考慮
- KONGA
- 感覺功能較強大, 但是偏商業化
~ enjoy it
沒有留言:
張貼留言