Centos下KONG API网关实践

上篇已经安装好了 kong

Centos安装KONG

一、命令操作
kong网关-添加服务和路由
services:
创建名为service.api的服务,并通过host绑定相应的后端服务upstream.api。

curl -X POST localhost:8001/services/service.api
-d "name=service.api"
-d "host=upstream.api"
//
{
    "host": "upstream.api",//绑定的upstream
    "created_at": 1553663485,
    "connect_timeout": 60000,
    "id": "5b93eda7-7ba5-4acc-a536-cf12f58a1144",//service.id
    "protocol": "http",
    "name": "service.api",
    "read_timeout": 60000,
    "port": 80,
    "path": "/api/v1",
    "updated_at": 1553663485,
    "retries": 5,
    "write_timeout": 60000
}

等同于:

http {
    server {
        listen 8000;
        location waiting-for-define {
            proxy_pass http://upstream.api;
        }
    }
}

routes
为服务service.api绑定路由。需要理解,route并非一条url,它是kong的路由服务,可以为某个kong服务管理管理一套路由集合,route就相当于 http > server 中的 location 规则集合。

#为service.api添加路由集合
curl -X POST localhost:8001/routes \
-d "name=route.api" \
-d "paths[]=/api/v1" \
-d "paths[]=/api/v2" \
-d "paths[]=/api/v3" \
-d "hosts[]=api.service.com" \
-d "hosts[]=service.com" \
-d "service.id=5b93eda7-7ba5-4acc-a536-cf12f58a1144"

#或者通过 services 的接口

curl -X POST localhost:8001/services/service.api/routes \
-d "name=route.api" \
-d "paths[]=/api/v1" \
-d "paths[]=/api/v2" \
-d "paths[]=/api/v3" \
-d "hosts[]=localhost" \
-d "hosts[]=api.service.com" \
-d "hosts[]=service.com" \

我们还同时指定了hosts,相当于server_name,顺手把虚拟主机也做了。
大致等同于如下配置:

http {
    server {
        listen 8000;
        server_name localhost api.service.com service.com;
        location /api/v1 {
            proxy_pass http://upstream.api;
        }
        location /api/v2 {
            proxy_pass http://upstream.api;
        }
        location /api/v3 {
            proxy_pass http://upstream.api;
        }
    }
}

这样我们可以通过

localhost:8000/api/v1
api.service.com:8000/api/v2
service.com:8000/api/v3

来访问 service.api服务,此服务后端有两台服务器做 LB。

二、安装Konga管理面板

git clone https://github.com/pantsel/konga.git
cd konga
npm i
npm start  //或者先npm run bower-deps然后npm run

默认端口:1337

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?