API網關主要應用在微服務架構上,用於統一管理服務通用的功能(監控,限流,鑒權等)
API網關很多,選擇入門kong是因為kong是開源的還可以給服務提供各種插件,使用方便
簡單理解:Kong = OpenResty + Nginx + Lua
kong基本組成如下:
admin api
通過API 管理 + 加載插件
LUA
OpenResty是基於Ngnix和Lua
Nginx
kong的規則創建和執行順序:
規則創建順序: upstream-> targets->service->route
node ip+port == pod ip +8080
規則執行順序: route (+path)-> service (host = upstream 的name) -> targets
upstream 是對上游服務器的抽象,用於負載均衡;target 代表了一個物理服務,是 ip + port 的抽象,也就是目標服務器;service 是抽象層面的服務,他可以直接映射到一個物理服務(host 指向 ip + port),也可以指向一個 upstream 來做到負載均衡;route 是路由的抽象,他負責將實際的 request 映射到 service。
1.創建upstream:
curl -X POST ip:8001/upstreams -d 'name=upstream-auth'
2.關聯目標地址:
curl -X POST ip:8001/upstreams/upstream-auth/targets -d 'target=ip:port ' -d 'weight=100'
upstream 和 target :1 對 n
3.配置service,通過host與upstream關聯
curl -i -X POST ip:8001/services/ --data 'name=auth' --data 'host=upstream-auth'
service 和 upstream :1 對 1 或 1 對 0 (service 也可以直接指向具體的 target,相當於不做負載均衡)
4.配置路由
curl -i -X POST ip:8001/services/auth/routes --data 'name=route-auth' --data 'hosts[]=up.hello' --data 'paths[]=/h/auth-srv'
service 和 route:1 對 n
訪問方式:http://up.hello:8000/h/auth-srv
Kong默認監聽端口:
8000,監聽來自客戶端的HTTP流量,轉發到你的upstream服務上。
8001,Kong的HTTP監聽的api管理接口。
8443,監聽HTTPS的流量,功能跟8000一樣。可以通過配置文件禁止。
8444,Kong的HTTPS監聽的API管理接口。
kong的使用方案: