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_writingNGINX将响应写入客户端的连接的当前数量
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 ms1秒(s)=1000毫秒(ms)
write_timeout写超时时间:默认60000 ms1秒(s)=1000毫秒(ms)
read_timeout读超时时间:默认60000 ms1秒(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>必填
  • 添加路由

    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
  • 更新路由

    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

      大概写一点添加服务,这里我是在虚拟机

Last modification:January 12, 2022
如果觉得我的文章对你有用,请随意赞赏