本文仍然是在ubuntu18的環境下進行html
https://github.com/PGBI/kong-dashboardnode
kong dashboart若是要正常使用管理UI,前提爲kong已經正常run(可參考)起來,此UI可看做爲一層薄薄的皮,包裝好了咱們須要的請求與返回的顯示問題(懶人必備?). python
在Kong的git上能夠看到豐富的三方工具,本文選用的管理UI也是上面的一個admin ui 項目linux
Here is a list of third-party tools maintained by the community:c++
- Ansible role for Kong on Ubuntu
- Biplane: declarative configuration in Crystal
- Bonobo: key management (with Mashery migration scripts)
- Chef cookbook
- Django Kong Admin: Admin UI in Python
- Jungle: Admin UI in JavaScript
- Kong Dashboard: Admin UI in JavaScript
- Kong for CanopyCloud
- Kong image waiting for Cassandra
- Kong image for Tutum
- Kong-UI: Admin UI in JavaScript
- Konga: CLI Admin tool in JavaScript
- Kongfig: Declarative configuration in JavaScript
- Kongfig on Puppet Forge
- Puppet recipe
- Python-Kong: Admin client library for Python
- .NET-Kong: Admin client library for .NET
- 安裝
準備工做(整個準備工做以用源碼安裝爲例 form source):git
1.使用的管理UI kong-dashboard 基於nodejs 因此須要安裝nodejs(友情提示,使用node 5.11.1版本比較好,其餘版本例如6.幾沒有跑起來,或者有朋友運行起來了能夠告知一下)github
2.因爲會使用到github資源和可能偶爾在牆外的資源,因此建議使用淘寶npm;web
3.同時會使用到bower;sql
4.npm install 過程須要c++ 11(因爲小Eight用的環境gcc版本低於4.8沒法支持c++11 須要升級gcc版本到4.8或4.8以上;關於如何升級的園子裏面文章很多若是你們須要我後續能夠poll一篇個人升級過程)docker
5.git clone下來的文件夾權限
6.若是使用root用戶進行install 須要修改(以下圖)
搞定準備工做以後,就能夠根據git步驟上進行安裝了(以經過源碼安裝爲例,具體命令有些許不一樣):
# Pull repository git clone https://github.com/PGBI/kong-dashboard.git
sudo chmod -R 777 kong-dashboard (!!!!該步非必須,根據實際使用進行文件夾讀寫權限調整)
cd kong-dashboard#npm install
sudo apt install npm
# Build Kong Dashboard
sudo npm install --unsafe-perm --registry=https://registry.npm.taobao.org# Start Kong Dashboard npm start # To start Kong Dashboard on a custom port npm start -- -p [port]
#或者使用下面的命令啓動kong-dashboard# Install Kong Dashboard npm install -g kong-dashboard # Start Kong Dashboard kong-dashboard start --kong-url http://kong:8001 # 使用自定義端口啓動kong-dashboard kong-dashboard start \ --kong-url http://localhost:8001 \ --port 8088
啓動成功後訪問:http://你的機器或綁定的域名:8080
從新安裝kong-0.13.x
一、安裝數據庫postgresql9.6
CentOS7安裝配置PostgreSQL9.6
安裝環境:CentOS7.2,與此處環境相同
2. 檢查數據庫服務狀態,有綠色,沒紅色說明啓動OK了
service postgresql-9.5 status
二、安裝kong
安裝包下載:https://kong.bintray.com/kong-community-edition-rpm/centos/7/
目前最新版本kong-community-edition-0.14.0.el7.noarch.rpm
咱們安裝kong-community-edition-0.13.1.el7.noarch.rpm緣由是Kong UI管理工具目前最高支持的版本就是13.1
1)、直接安裝
# rpm -vih kong-community-edition-0.13.0.el7.noarch.rpm
2)、配置kong
# vi /etc/kong/kong.conf.default
如下爲kong鏈接postgresql數據庫的相關配置
database = postgres # 指明用哪一個數據庫 pg_host = 127.0.0.1 #數據庫所在主機ip地址 pg_port = 5432 # 端口號 pg_user = kong # 數據庫用戶 pg_password =kong # 數據庫密碼 pg_database = kong # 數據庫名
3)、啓動kong
遷移數據庫,將kong所需的表刷入數據庫
# kong migrations up -c /etc/kong/kong.conf.default
啓動kong
# kong start -c /etc/kong/kong.conf.default
測試kong是否啓動成功
# curl -i http://localhost:8001/
三、安裝Kong UI管理工具
Using npm (使用 npm)
1. 安裝 nodejs:
curl -sL https://rpm.nodesource.com/setup_6.x | bash -
yum install -y nodejs
若是提示你須要安裝構建工具 gcc gcc++ 什麼的你就安裝就好了,安裝完了再從新安裝 nodejs
命令:node -v 若是輸出版本號就安裝成功了。
2. 更新 npm (此時的 npm 命令已經隨 nodejs 的安裝過程給安裝了,這裏可能只是爲了更新一下我也不太明白)
npm install npm@latest -g
命令:npm -v 輸出版本號就成功安裝了。
開始kong-dashboard安裝了
# Install Kong Dashboard npm install -g kong-dashboard # Start Kong Dashboard kong-dashboard start --kong-url http://kong:8001 # Start Kong Dashboard on a custom port kong-dashboard start \ --kong-url http://kong:8001 \ --port [port] # Start Kong Dashboard with basic auth kong-dashboard start \ --kong-url http://kong:8001 \ --basic-auth user1=password1 user2=password2 # See full list of start options kong-dashboard start --help
經過Docker方式安裝 Using Docker (使用 Docker )
# Start Kong Dashboard docker run --rm -p 8080:8080 pgbi/kong-dashboard start --kong-url http://kong:8001 # Start Kong Dashboard on a custom port docker run --rm -p [port]:8080 pgbi/kong-dashboard start --kong-url http://kong:8001 # Start Kong Dashboard with basic auth docker run --rm -p 8080:8080 pgbi/kong-dashboard start \ --kong-url http://kong:8001 --basic-auth user1=password1 user2=password2 # See full list of start options docker run --rm -p 8080:8080 pgbi/kong-dashboard start --help
使用Admin UI
具體使用和UI上顯示內容的含義可參考kong的doc,下面只簡單說起一些須要注意的地方,補贅述具體使用
1.配置注意地址(kong的管理地址,默認爲http://kong server機器或綁定的域名:8001)後面不要多加"/"以下圖 不然點擊API會出現not found api之類的提示,固然也要確保kong server正常運行中
2.新增API與使用新增的API時,須要注意若是須要使用地址方式指向api即 須要勾選strip-request path 若是使用head中帶請求地址的方式,須要在head中帶 X-Host-Override post.demo (即request host)
使用時須要注意,請求的地址爲http://kong server機器或綁定的域名:8000 (下圖爲在url中帶請求的api的方式)
3.插件使用實例,使用key-
i.須要在api基礎上新建插件auth key
ii.設置插件 keyname(須要注意此keyname會在後面url中使用)
當啓用插件後
若是後面keyname在地址欄或header中不正確會有以下提示
iii.新建customer並設置其key的內容也能夠認爲爲keyname對應的值上面(該處暫時使用的對應上述auth key),用於實際訪問使用
在consumers的列表中,點擊Auth下的連接:
以下頁面:
列表:
iiii.使用(請求的地址爲http://kong server機器或綁定的域名:8000)
header方式以下圖
後注:
1.其餘插件的使用方式大同小異(例如日誌等插件你們能夠自行檢查嘗試)
2.對於使用kong來處理webservice的狀況,因爲咱們想達到的效果是能夠每次都管控到調用而非僅僅在引用的時候,因此須要對引用後自動生成的配置文件中的endpoint進行修改,實質爲wdsl內容進行處理.將地址替換爲kong包裝過的地址便可.
以c#爲例小Eight的處理方式,在引用端調用生成類使用時,只須要指明調用的是那個端口即便用多個endpoint對應的name
1.引入HttpsReflector
using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Web.Services.Description; namespace WebService4Test { public class HttpsReflector : SoapExtensionReflector { public override void ReflectMethod() { //no-op } public override void ReflectDescription() { ServiceDescription description = ReflectionContext.ServiceDescription; foreach (Service service in description.Services) { foreach (Port port in service.Ports) { foreach (ServiceDescriptionFormatExtension extension in port.Extensions) { SoapAddressBinding binding = extension as SoapAddressBinding; if (null != binding) { binding.Location = binding.Location.Replace("localhost:9933/Service1.asmx", "kong server機器或綁定的域名:8000/wbstest?apikey=testbaidukey"); ;//http://localhost:9933/Service1.asmx } } } } } } }
2.修改Web.Config 新增HttpsReflector system.web中加入以下code
<webServices> <soapExtensionReflectorTypes> <add type="WebService4Test.HttpsReflector, WebService4Test"/> </soapExtensionReflectorTypes> </webServices>
解決報錯: Connecting to Kong on http ... Could not reach Kong on http://xxx.xxx.xxx.xxx:8001
1. Docker 中安裝並啓動好網關 kong 後,想要安裝 kong 的圖形化界面 kong-dashboard ,運行命令:docker run --rm -p 8080:8080 --name kong-dashboard pgbi/kong-dashboard start --kong-url http://xxx.xxx.xxx.xxx:8001報錯以下: Connecting to Kong on http://xxx.xxx.xxx.xxx:8001 ... Could not reach Kong on http://xxx.xxx.xxx.xxx:8001 Error details: { Error: connect ETIMEDOUT xxx.xxx.xxx.xxx:8001 at Object._errnoException (util.js:1019:11) at _exceptionWithHostPort (util.js:1041:20) at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1175:14) code: 'ETIMEDOUT', errno: 'ETIMEDOUT', syscall: 'connect', address: 'xxx.xxx.xxx.xxx', port: 8001 }2. 緣由:鏈接拒絕錯誤的是由於2個容器(kong 和 kong-dashboard)在默認橋接網絡上,這不會執行DNS解析。須要建立一個用戶定義的橋接網絡並將這兩個容器添加到該網絡 。3. 解決: 建立橋樑網絡 docker network create my-net 將Kong容器添加到它 docker network connect my-net kong 運行kong-dashboard時提供網絡信息 docker run --rm --network my-net -p 8080:8080 pgbi/kong-dashboard start --kong-url http://kong:8001PS : 最後一行命令運行 kong-dashboard 時,最末我本來是寫的是「http://xxx.xxx.xxx.xxx:8001」,這樣報錯依舊,直到改成如上寫成:「http://kong:8001」才行。