kong网关之Admin Api使用

2022-09-11 17:48:35 浏览数 (1)

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 添加服务为例演示 服务
  • 端口说明
    • 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 大概写一点添加服务,这里我是在虚拟机

0 人点赞