一、Kong介紹
Kong 是在用戶端和(微)服務間轉發API通信的API網關,通過插件擴充功能。Kong 有兩個主要元件:
1、Kong Server :基于nginx的伺服器,用來接收 API 請求。
2、Apache Cassandra:用來存儲操作資料。
你可以通過增加更多 Kong Server 機器對 Kong 服務進行水準擴充,通過前置的負載均衡器向這些機器分發請求。根據文檔描述,兩個Cassandra節點就足以支撐絕大多數情況,但如果網絡非常擁擠,可以考慮适當增加更多節點。
對于開源社群來說,Kong 中最誘人的一個特性是可以通過插件擴充已有功能,這些插件在 API 請求響應循環的生命周期中被執行。插件使用 Lua 編寫,而且Kong還有如下幾個基礎功能:HTTP 基本認證、密鑰認證、CORS( Cross-origin Resource Sharing,跨域資源共享)、TCP、UDP、檔案日志、API 請求限流、請求轉發以及 nginx 監控。
以上即是對kong網關的介紹,接下來直接進入實操環節。
二、在Docker上部署Kong
1、建立一個網橋
docker network create kong-net
2、建立資料庫Postgresql容器
在指令中把資料庫産生的資料檔案挂在在硬碟上,防止容器奔潰資料丢失。
docker run -d --name kong-database --network=kong-net -p 5432:5432 -e "POSTGRES_USER=kong" -e "POSTGRES_DB=kong" -e "POSTGRES_PASSWORD=123456" -v /home/postgresql/data:/var/lib/postgresql/data -v /etc/localtime:/etc/localtime --restart=always postgres:9.6
3、準備Kong的資料庫,進行資料庫初始化
docker run --rm --network=kong-net -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-database" -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" -e "KONG_PG_PASSWORD=123456" kong:latest kong migrations bootstrap

對于Kong<0.15:Kong版本低于0.15(最高0.14)的注意事項,請使用up子指令而不是bootstrap。另請注意,如果Kong <0.15,則不應同時進行遷移; 隻有一個Kong節點應該一次執行遷移。對于0.15,1.0及以上的孔,此限制被取消。
三、Kong的Docker部署
1、Kong的安裝部署
docker run -d --name kong \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_PASSWORD=123456" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
-e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
-e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
-e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \
-p 8000:8000 \
-p 8443:8443 \
-p 8001:8001 \
-p 8444:8444 \
-v /etc/localtime:/etc/localtime \
--restart=always \
kong:latest
四、kong-dashboard
Kong 網關的 Dashboard 目前有兩個畢竟大的開源的Dashboard,分别是
A、 pgbi/kong
https://github.com/PGBI/kong-dashboard/commits/3.0B、 pantsel/konga
https://github.com/pantsel/konga從維護更新的頻率來看,pgbi/kong 在走下坡路,而konga維護良好,建議大家使用konga,他們倆的操作界面大同小異,比如我目前使用的是Konga
注:需要注意的是0.10.x開始的KONGA隻支援0.11版本以上的KONG。
1、為了友善,我們資料庫使用跟kong一樣的,是以我們先建立表,建立完後就可以退出。并且删除kong_dashboard
docker run -ti --network=kong-net -e "DB_ADAPTER=postgres" -e "DB_HOST=kong-database" -e "DB_PORT=5432" -e "DB_USER=kong" -e "DB_PASSWORD=123456" -e "DB_DATABASE=kong" -e "NODE_ENV=development" --name kong_dashboard pantsel/konga
注:如果要單獨的建立一個資料庫可以重複執行第一部分的建立資料庫指令
2、運作konga
docker run -d -p 1337:1337 --network=kong-net -e "DB_ADAPTER=postgres" -e "DB_HOST=kong-database" -e "DB_PORT=5432" -e "DB_USER=kong" -e "DB_PASSWORD=123456" -e "DB_DATABASE=kong" -e "NODE_ENV=production" -v /etc/localtime:/etc/localtime --restart=always --name kong_dashboard pantsel/konga
3、打開KONGA
位址:
http://192.168.75.161:1337會跳轉到先注冊,需要建立管理者賬号
賬号:Louie 密碼:123456789
4、建立與kong的連接配接
因為konga與kong是同在一個網橋中,是以可以直接使用網橋配置設定的IP進行連接配接
建立完後,顯示出界面
五、總結
Kong網關的功能非常強大,可以适用于任何的大型項目,而且擴充友善。