官方安裝:https://getkong.org/install/kubernetes/html
擴展講解:https://blog.fleeto.us/post/intro-kong/node
提示:本文是在k8s(kubernetes)上安裝kong以及Kubernetes Ingress Controller,將Kong部署到Kubernetes上很簡單,但將Kubernetes的服務與Kong整合是一個手動過程,因此在2018年5月8日,發佈了Kubernetes Ingress Controller。經過與Kubernetes Ingress Controller集成,Kong直接與Kubernetes生命週期相關聯。隨着應用程序的部署和新服務的建立,Kong將自動進行實時配置,爲這些服務提供流量mysql
簡介:Kong 是在客戶端和(微)服務間轉發API通訊的API網關,經過插件擴展功能。nginx
Kong 有兩個主要組件:git
Kong Server :基於 nginx 的服務器,用來接收 API 請求。github
Apache Cassandra & :用來存儲操做數據。sql
注:Ambassador沒有數據庫 - 它依賴於ConfigMap來存儲狀態docker
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
上面這段命令表示:
--url:http://localhost:8001/apis/ 固定的,加入 api 就得寫這個,表示給 kong管理。
upstream_url:表示咱們的網站。至關於一個請求前綴。
request_path:就是具體咱們的 api。
刪除 api
後面 這個串表示 加入的api的 id。
1、初始設置
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/