網關服務Kong和konga介紹安裝


網關服務Kong和konga介紹安裝使用教程

 

介紹

Kong是一款基於OpenResty(Nginx + Lua模塊)編寫的高可用、易擴展的,由Mashape公司開源的API Gateway項目。Kong是基於NGINX和Apache Cassandra或PostgreSQL構建的,能提供易於使用的RESTful API來操作和配置API管理系統,所以它可以水平擴展多個Kong服務器,通過前置的負載均衡配置把請求均勻地分發到各個Server,來應對大批量的網絡請求。
Kong是一個在 Nginx 中運行的Lua應用程序,並且可以通過lua-nginx模塊實現,Kong不是用這個模塊編譯Nginx,而是 OpenResty 一起發布,OpenResty已經包含了 lua-nginx-module, OpenResty 不是 Nginx的分支,而是一組擴展其功能的模塊。它的核心是實現數據庫抽象,路由和插件管理,插件可以存在於單獨的代碼庫中,並且可以在幾行代碼中注入到請求生命周期的任何位置。

Kong主要有三個組件:

  • Kong Server :基於nginx的服務器,用來接收API請求。
  • Apache Cassandra/PostgreSQL :用來存儲操作數據。
  • Kong dashboard:官方推薦UI管理工具,當然,也可以使用 restfull 方式 管理admin api。

Kong的主要功能包括:

  • 高級路由、負載平衡、健康檢查——所有這些都可以通過管理 API 或聲明性配置進行配置。
  • 使用 JWT、基本身份驗證、ACL 等方法對API 進行身份驗證和授權。
  • 代理、SSL/TLS 終止以及對 L4 或 L7 流量的連接支持。
  • 用於實施流量控制、req/res轉換、日志記錄、監控和包括插件開發人員中心的插件。
  • 復雜的部署模型,如聲明式無數據庫部署和混合部署(控制平面/數據平面分離),沒有任何供應商鎖定。
  • 本機入口控制器支持服務Kubernetes。

在這里插入圖片描述
插件提供了擴展網關使用的高級功能。許多 Kong Inc. 和社區開發的插件(如 AWS Lambda、Correlation ID 和 Response Transformer)都在插件中心展示。
在這里插入圖片描述
在這里插入圖片描述

官網:
https://docs.konghq.com/

github:

https://github.com/kong/kong
https://github.com/pantsel/konga

安裝教程

這里推薦使用docker安裝,並且推薦使用docker-compose進行安裝,因為可以安裝圖形化界面konge,省去了kong和konge整合的煩惱,而且安裝部署方便。
docker安裝可參考我之前寫的這篇博文:Docker簡易安裝教程

如果還是想用linux方式安裝,安裝方式以及問題可參考這篇博文:https://blog.csdn.net/qq_33067315/article/details/108635407

docker-compose安裝

docker-compose安裝命令如下:

sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

安裝成功之使用docker-compose --version查看安裝版本,docker-compose的yml的配置文件說明可參考:https://www.runoob.com/docker/docker-compose.html,這里就不再過多描述了。

kong和konga的compose.yml文件

在了解docker-compose之后,我們首先在/opt/目錄下創建kong文件夾,然后使用touch命令創建一個docker-compose.yml文件,然后添加如下配置:

docker-compose.yml

version: '3' services: kong-database: image: postgres:9.6 restart: always #每次總是啟動 networks: - kong-net environment: POSTGRES_USER: kong POSTGRES_DB: kong POSTGRES_PASSWORD: kong ports: - "5432:5432" ####################### # 執行數據庫遷移 ###################### kong-migration: image: kong:latest command: "kong migrations bootstrap" networks: - kong-net restart: on-failure environment: - KONG_DATABASE=postgres - KONG_PG_DATABASE=kong - KONG_PG_PASSWORD=kong - KONG_PG_HOST=kong-database links: - kong-database #連接的是kong-database服務的 depends_on: - kong-database #依賴於kong-database服務 ##################### # kong gateway ##################### kong: image: kong:latest restart: always networks: - kong-net environment: KONG_DATABASE: postgres KONG_PG_HOST: kong-database KONG_PG_PASSWORD: kong KONG_PROXY_LISTEN: 0.0.0.0:8000 KONG_PROXY_LISTEN_SSL: 0.0.0.0:8443 KONG_ADMIN_LISTEN: 0.0.0.0:8001 depends_on: - kong-migration links: - kong-database healthcheck: test: ["CMD", "curl", "-f", "http://kong:8001"] interval: 5s timeout: 2s retries: 15 ports: - "8001:8001" - "8000:8000" - "8443:8443" ####################### #以下兩個是konga GUI ####################### konga-prepare: image: pantsel/konga:latest command: "-c prepare -a postgres -u postgresql://kong:kong@kong-database:5432/konga" #注意是用戶名:密碼@數據庫服務名稱:端口 networks: - kong-net restart: on-failure links: - kong-database depends_on: - kong #依賴kong服務 - kong-database #依賴kong-database服務 konga: image: pantsel/konga:latest restart: always networks: - kong-net environment: DB_ADAPTER: postgres DB_HOST: kong-database DB_USER: kong DB_DATABASE: konga DB_PASSWORD: kong #必須加上密碼,不然會失敗 depends_on: - kong - kong-database ports: - "1337:1337" networks: kong-net: driver: bridge 

上述配置完畢之后,在/opt/kong該目錄下輸入如下命令,進行啟動

docker-compose up -d

然后輸入docker-compose ps進行查看是否啟動成功,成功示例圖如下:

在這里插入圖片描述

一個簡單使用示例

本示例主要講解一下網關中最常用的路由轉發,原先是A服務配置B服務的地址,然后A服務直接請求B,現在則是A服務配置網關服務的地址,然后請求網關服務,網關服務將A的請求轉發到B服務。

這里需要使用konga,因為有圖形化界面,操作較為簡單明了,當然用命令也可以實現,方法在上述的官方文檔中給出了示例,這里就不再過多描述了。

在瀏覽器輸入konga的地址,地址為:ip:1337,打開界面之后,默認是需要創建一個管理員的賬號的,按照示例圖的填寫即可,示例圖如下:
在這里插入圖片描述

注冊完畢之用創建的賬和密碼進行登錄,然后填寫kong服務的ip和端口,我這里設置的是8001,名稱這里我填寫的kong,可以隨意,示例圖如下:

在這里插入圖片描述
注:由於當時填寫忘記截圖了,就用了配置好的截圖,實際效果基本一致。

一個簡單路由轉發示例:

kong服務地址: 192.168.10.102
本地服務version查看地址: 192.168.6.14

登錄konga,點擊services,點擊add new service,創建一個服務,配置信息填寫如下:
在這里插入圖片描述

然后點擊該服務,在里面添加路由,然后填寫路由相關信息。
在這里插入圖片描述

配置信息如下:

在這里插入圖片描述
然后在本地的電腦的hosts文件添加如下kong服務和域名的映射:
windows路徑: C:\Windows\System32\drivers\etc\hosts
linux路徑: /etc/hosts

192.168.10.102 pancm.com 

映射ok之后,啟動本地的服務,在瀏覽器訪問 http://pancm.com:8000/或http://pancm.com:8000/version都可看到版本信息

在這里插入圖片描述

在這里插入圖片描述

完整的請求流程如下:

瀏覽器域名請求->通過hosts文件找到地址->請求kong服務地址->根據服務路由配置進行轉發->請求配置服務的接口地址->返回數據


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM