kong网关之Admin Api使用
- 文档地址
- 说明
- 以下所有使用的IP :
192.168.56.2
为你的kongAdminApi的请求IP - 以下所有使用的IP :
192.168.56.3
为模拟上游服务接口的请求IP - 以
http://192.168.56.3:9501/user
为模拟上游服务接口使用kong Admin APi 添加服务为例演示 服务
- 以下所有使用的IP :
- 端口说明
- 8001是管理员API监听的默认端口。
- 8444是管理API的HTTPS通信的默认端口。
- 8000 端口为客户端访问端口。
- 查询节点信息
curl http://192.168.56:8001
- 返回的重要参数解释
node_id
:正在运行的kong节点的uuid,当kong启动时随机生成,每次kong重启时这个uuid都会变available_on_server
:kong节点上安装的plugins的名称enabled_in_cluster
:kong节点中启用的插件,即在数据库中生成了对应存储表
- 查询节点状态
curl http://192.168.56:8001/status
- 返回的重要参数解释
字段 | 解释 |
---|---|
total_requests | 客户端请求总数 |
connections_active | 包括等待连接的活动客户端连接的当前数量 |
connections_accepted | 接受的客户端连接的总数 |
connections_handled | 处理连接的总数。一般来说,除非达到一定的资源限制,否则参数值与接受值相同 |
connections_reading | 当前Kong正在读取请求头的连接数 |
connections_writing | NGINX将响应写入客户端的连接的当前数量 |
connections_waiting | 等待请求的空闲客户端连接的当前数量 |
reachable | 反映数据库连接状态的布尔值。注意,此标志不反映数据库本身的健康状况。 |
- 添加服务
- 两种写法(
url 这个属性很好用,可以直接指定 protocol、host、port and path
)curl -i -X POST http://192.168.56.2:8001/services -d "name=user" -d "url=http://192.168.56.3:9501/user"
curl -i -X POST http://192.168.56.2:8001/services -d "name=test.service" -d "protocol=http" -d "host=192.168.56.3" -d "path=/user"
- 参数说明
- 两种写法(
字段 | 解释 | 备注 |
---|---|---|
name | 服务名称 | 无 |
protocol | 协议:http or https 默认是 http | 你后端服务用什么协议访问就写什么协议 |
host | 后端服务域名 | 无 |
port | 后端服务端口 | 无 |
path | 后端服务子路径;没有就填 '/' | 无 |
retries | 重试次数:默认 5次 | 默认就行 |
connect_timeout | 请求后端服务的超时时间:默认60000 ms | 1秒(s)=1000毫秒(ms) |
write_timeout | 写超时时间:默认60000 ms | 1秒(s)=1000毫秒(ms) |
read_timeout | 读超时时间:默认60000 ms | 1秒(s)=1000毫秒(ms) |
url | 后端服务url地址 | 一般就用这种方式,可以直接指定:protocol、host、port and path, 不用单独指定啦 |
- 查询服务
- 查询所有服务
curl -i -X GET http://192.168.56:8001/services
- 查询某个服务
curl -i -X GET http://192.168.56:8001/services/{服务名称 or 服务id}
- 获取某个路由下的服务
curl -i -X GET http://192.168.56:8001/routes/{路由ID}/service
- 查询所有服务
- 更新服务
- 可以用 PATCH 和 PUT,PATCH可以修改已存在的服务,PUT 如果服务不存在则新建一个。
curl -i -X PUT http://192.168.56:8001/services/{服务名称或ID} -d "name=user" -d "protocol=http" -d "host=192.168.56.3" -d "path=/user"
- 删除服务
curl -i -X DELETE http://localhost:8001/services/{服务名称或ID}
路由
- 路由是真正对外提供接口的实体,每个路由都与一个服务相关联,而服务可能有多个与之相关联的路由。每一个匹配给定路线的请求都将被提交给它的相关服务。
- 路由参数说明
字段 | 解释 | 是否必填 |
---|---|---|
protocols | 协议列表,http、https。设置:protocols[]=http&protocols[]=https | 必填 |
methods | 接受请求的方法:GET 或 POST ,二者都行。设置 methods[]=GET&methods[]=POST | 半选填:默认是二者都行 |
hosts | 与此路由匹配的域名列表。例如:example.com。用作form-encode, 设置:hosts[]= Foo.com和hosts[]= BAR.com | 半选填 |
paths | 与此路由匹配的路径列表。例如:/test | 必填:这个很重要,区分多服务 |
strip_path | 选填 | |
preserve_host | 选填 | |
service | 与此路由绑定的服务。设置:service.id=<service_id> | 必填 |
添加路由
代码语言:javascript复制curl -i -X POST --url http://192.168.56:8001/routes/
-d 'protocols[]=http&protocols[]=https'
-d 'paths=/shop'
-d 'service.id=xxx-xxxx-xxxx-xx' #服务ID
# 访问接口
curl -i -X GET http://192.168.56:8000/shop/{后端服务路由}
查询路由
- 查询全部路由
curl -i -X GET http://localhost:8001/routes/
- 查询某个路由
curl -i -X GET http://localhost:8001/routes/xxx-xxx-xxx #路由ID
- 查询某服务下的路由
curl -i -X GET http://localhost:8001/services/{服务名或服务ID}/routes
更新路由
代码语言:javascript复制curl -i -X PUT http://localhost:8001/routes/xxx-xxx-xxx #路由ID
-d 'protocols[]=http&protocols[]=https'
-d 'paths=shop1'
删除路由
curl -i -X DELETE http://localhost:8001/routes/xxx-xxx-xxx #路由ID
大概写一点添加服务,这里我是在虚拟机