官方安裝:https://getkong.org/install/kubernetes/
擴展講解:https://blog.fleeto.us/post/intro-kong/
提示:本文是在k8s(kubernetes)上安裝kong以及Kubernetes Ingress Controller,將Kong部署到Kubernetes上很簡單,但將Kubernetes的服務與Kong整合是一個手動過程,所以在2018年5月8日,發布了Kubernetes Ingress Controller。通過與Kubernetes Ingress Controller集成,Kong直接與Kubernetes生命周期相關聯。隨着應用程序的部署和新服務的創建,Kong將自動進行實時配置,為這些服務提供流量
簡介:Kong 是在客戶端和(微)服務間轉發API通信的API網關,通過插件擴展功能。
Kong 有兩個主要組件:
Kong Server :基於 nginx 的服務器,用來接收 API 請求。
Apache Cassandra & :用來存儲操作數據。
注:Ambassador沒有數據庫 - 它依賴於ConfigMap來存儲狀態
Kong 還有如下幾個基礎功能:
HTTP 基本認證、密鑰認證、CORS( Cross-origin Resource Sharing,跨域資源共享)、TCP、UDP、文件日志、API 請求限流、請求轉發以及 nginx 監控
Serf是一個去中心化的集群成員管理、故障檢測解決方案,Kong用它做清緩存,看來Kong里面核心的數據consumer、api、plugin都是做了緩存的,還可以做集群節點的監控
不足:數據庫不支持常用的mysql,只支持Postgres/Cassandra
擴展Kong需要會寫lua腳本
不修改源碼的情況下,無法自定義nginx配置文件,因為重啟后會重新初始化有變更的nginx配置文件【nginx.conf|nginx-kong.conf】
安裝過程中會創建一個 Postgres 的 StatefulSet,前面提到,這一版本對 Kubernetes 集群的最低版本要求是 1.8
Kong的限流從技術上來講支持三種,分別是本地限流(local)、數據庫限流(cluster)和Redis限流
Kong的這三種限流方式都沒有考慮並發情況
限流:https://my.oschina.net/chinamerp/blog/851613
當到達限流的臨界值(max-1)時,此時有多條請求同時執行get_usage,計算結果全部通過,而我們期望的是僅有一條請求能通過
8000端口是可以給用戶訪問,就是說用戶發送請求先到 Kong 項目的 8000 端口,然后Kong 項目幫你轉到你的后端應用api。
8001 端口是管理端口,比如說,管理員可以通過 8001端口來得到你加入過的 api
管理:
列出 所加過的 api
curl localhost:8001/apis/
加入 api
- curl -i -X POST --url http://localhost:8001/apis/ --data 'upstream_url=http://camp.uats.cc' --data 'request_path=login'
上面這段命令表示:
-
--url:http://localhost:8001/apis/ 固定的,加入 api 就得寫這個,表示給 kong管理。
-
upstream_url:表示我們的網站。相當於一個請求前綴。
-
request_path:就是具體我們的 api。
刪除 api
- curl -i -X DELETE localhost:8001/apis/00f90ca9-cf2d-4830-c842-3b90f6cd08af
后面 這個串表示 加入的api的 id。
一、初始設置
1.下載或克隆以下代碼
$ git clone
https://github.com/Kong/kong-dist-kubernetes.git
$ cd kong-dist-kubernetes
2. 修改配置文件主要是k8s 對應service 的類型 修改為 type: nodePort
配置文件
Deployment
控制器部署到集群
kubectl create -f kong_postgres.yaml

您現在可以看到已經使用的資源kubectl
:
$ kubectl get all
一旦EXTERNAL_IP
可用於Kong代理和管理服務,您可以通過發出以下請求來測試Kong:
$ curl <kong-admin-ip-address>:8001 $ curl https://<admin-ssl-ip-address>:8444 $ curl <kong-proxy-ip-address>:8000 $ curl https://<kong-proxy-ssl-ip-address>:8443

我這可以看到kong以及啟動了,kong-rc都是running,
舉例測試例如:curl 192.168.1.216:31572
docker run -d -p 8080:8080 pgbi/kong-dashboard:v2
API node 輸入 k8snodeip:service nodeport
例如我的是:192.168.1.216:31572





API Gateway 模式: http://microservices.io/patterns/apigateway.html
Nginx: https://www.nginx.com/blog/introduction-to-microservices/
Kong 項目官網:https://getkong.org/