kong api gateway 初體驗
作者:Forezp
來源:公衆號方誌朋
Kong是一個可擴展的開源API層(也稱爲API網關或API中間件)。 Kong運行在任何RESTful API的前面,並通過插件擴展,它們提供超出核心平臺的額外功能和服務。
Kong最初是在Mashape建立的,用於爲其API Marketplace提供超過15,000個API和Microservices,併爲超過20萬的開發者每月生成數十億個請求。 今天,Kong被用於小型和大型組織的關鍵任務部署
使用的軟件
- Unbuntu 虛擬機(有自己的服務器更好)
- PostgreSQL
- kong
- kong-dashboard
- docker
- spring boot
安裝 PostgreSQL
kong 需要使用到數據庫,目前支持PostgreSQL和Cassandran ,我選擇大象數據庫,安裝過程省略,可以參考這篇文章。
http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html
安裝完後建一個kong的用戶、密碼爲kong、建一個kong 數據庫:
CREATE USER kong; CREATE DATABASE kong OWNER kong;
安裝kong
下載kong的源文件,下載地址:https://getkong.org/install/ubuntu/
下載完成之後會有這樣一個文件kong-community-edition-0.11.0.*.deb,cd到這個文件的目錄:
$ sudo apt-get update
$ sudo apt-get install openssl libpcre3 procps perl
$ sudo dpkg -i kong-community-edition-0.11.0.*.deb
配置kong
配置文檔在這裏:
https://getkong.org/docs/0.9.x/configuration/
複製配置文件:
$ cp /etc/kong/kong.conf.default /etc/kong/kong.conf
配置文件:
/etc/kong/kong.conf
/etc/kong.conf
打開配置文件,裏面可以修改很多配置,修改數據庫連接,用戶名、密碼
pg_host = 127.0.0.1 # The PostgreSQL host to connect to.
pg_port = 5432 # The port to connect to.
pg_user = kong # The username to authenticate if required.
pg_password = kong # The password to authenticate if required.
pg_database = kong
執行以下整合命令:
$ kong migrations up [-c /path/to/kong.conf]
啓動kong :
kong start -c /etc/kong/kong.conf --vv
打開瀏覽器訪問:localhost:8001,瀏覽器顯示了一大串關於kong的json字符串,則啓動成功。
kong管理端口爲8001, 監控端口爲8000。
管理端口用rest api對api進行操作,文檔地址:https://getkong.org/docs/0.8.x/admin-api
安裝 kong-dashboard
kong管理端的第三方網頁,地址:https://github.com/PGBI/kong-dashboard
支持npm啓動,但是沒有成功過,直接選擇了docker啓動。
要求先安裝docker,docker啓動鏡像
# Start Kong Dashboard 8080端口啓動
docker run -d -p 8080:8080 pgbi/kong-dashboard:v2
# Start Kong Dashboard on a custom port 指定一個端口啓動
docker run -d -p [port]:8080 pgbi/kong-dashboard:v2
# Start Kong Dashboard with basic auth 8080端口啓動,帶一個用戶基本認證
docker run -d -p 8080:8080 pgbi/kong-dashboard:v2 -a user=password
演示實例
在電腦上開啓一個spring boot 工程有一個api接口爲http://10.10.20.187:8762/hi
其實kong管理api有一系列的接口,直接用crul 就可以完成管理,但是有第三個kong-dashboard,我就用了kong-dashboard的管理界面進行操作。
在上一小節啓動docker之後,打開網頁http://192.168.86.128:8080(我unbuntu虛擬機的host爲192.168.86.128),填寫kong的管理urlhttp://192.168.86.128:8001,就可以進入了。
在kong管理界面創建一個api接口:
填寫相關的參數即可,創建完成後如下:
在瀏覽器上訪問:http://192.168.86.128:8000/hi
hi forezp,i am from port:8762
添加api限流插件,一個ip一分鐘10次。
訪問超過10次後,會拒絕訪問。
添加file-log的插件,文件存放目錄爲/temp/file.log :
再次訪問:http://192.168.86.128:8000/hi
可以在打開/temp/file.log看見裏面的日誌信息。
kong 支持了20中插件,插件地址:https://getkong.org/plugins/
參考資料
https://getkong.org/about/
http://www.cnblogs.com/SummerinShire/category/861287.html
http://www.jianshu.com/p/f9a2210f6722
https://yq.aliyun.com/articles/63180
http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html