网关服务KONG(二):admin-api使用指南

部署好kong之后,想要进行kong的配置管理,kong提供了比较全面的restful api,每个版本会有所不同,下面的记录基于kong v0.13.x。我们可以使用界面进行如下想要实现的动作,但这里主要讲解下常用的接口api命令方式如何操作


1. Information Routes

获取kong节点的通用详细信息

  • 查询节点信息

    curl  http://localhost:8001
    

    部分返回字段含义:

    node_id : 正在运行的kong节点的uuid,当kong启动时随机生成,每次kong重启时这个uuid都会变

    availabel_on_server : kong节点上安装的plugins的名称

    enabled_in_cluster : kong节点中启用的插件,即在数据库中生成了对应存储表

  • 查询节点状态

    curl  http://localhost:8001/status
    

    total_requests : 客户端请求总数

    connections_active : 包括等待连接的活动客户端连接的当前数量

    connections_accepted : 接受的客户端连接的总数

    connections_handled : 处理连接的总数。一般来说,除非达到一定的资源限制,否则参数值与接受值相同

    connections_reading : 当前Kong正在读取请求头的连接数

    connections_writing : NGINX将响应写入客户端的连接的当前数量

    connections_waiting : 等待请求的空闲客户端连接的当前数量

    reachable : 反映数据库连接状态的布尔值。注意,此标志不反映数据库本身的健康状况

2. Service Object
属性约束描述
nameoptional服务名称
protocolrequired,default:http用于与上游接口通信的协议。是http或https
hostrequired上游服务的host
portrequired,default:80上游服务的端口
pathoptional,default:null请求上游服务器使用的路径,默认为空
retriesoptional,default:5代理失败时重试的次数
connect_timeoutoptional,default:60000ms建立与上游服务器连接的超时时间(ms)
write_timeoutoptional,default:60000ms在向上游服务器发送请求的两个连续写入操作之间的超时时间(ms)
read_timeoutoptional,default:60000ms在向上游服务器发送请求的两个连续读取操作之间的超时时间(ms)
urlshorthand-attribute一次性设置protocol、host、port和path的缩写。此属性是只读的(管理API不会返回“URL”)
nameoptional服务名称
  • 创建一个service

    POST /services/

    curl -i -X POST --url http://localhost:8001/services/ \
     --data 'name=example-service' \
     --data 'url=http://localhost:8762/test1/'
    
  • 为service创建路由

    curl -i -X POST --url http://localhost:8001/services/example-service/routes \
    --data 'hosts[]=example.com'
    
  • 访问kong,测试是否转发

    curl -i -X GET --url http://localhost:8000/hello \
    --header "Host:example.com"
    
  • 查看某个service

    GET /services/{name or id}

    curl -i -X GET --url  http://localhost:8001/services/example-service
    
  • 更新某个service

    PATCH /services/{name or id}

    curl -i -X PATCH --url  http://localhost:8001/services/example-service \ 
    --data 	'name=example-service-bak' \
    --data 'retries=6'
    
  • 删除某个service

    DELETE /services/{name or id}

    curl -i -X DELETE --url  http://localhost:8001/services/example-service 
    
3. Route Object

路由定义匹配客户端请求的规则,每个路由与服务相关联,并且一个服务可关联多个路由。匹配给定路由的每个请求将被代理到与其关联的服务。路由和服务的组合和分离提供了一种强大的路由机制,通过它可以在Kong定义细粒度的入口点,从而访问基础设施的不同上游服务

属性约束描述
protocolsrequired,default:[“http”, “https”]此路由应允许的协议列表。 当设置为[ HTTPS ]时,HTTP请求将被请求升级到HTTPS。使用form-encoded,符号是protocols[]=http&protocols[]=https。 使用数组
methodssemi-optional与此路由匹配的HTTP方法列表。例如[“GET”, “POST”]。必须设置hosts、paths或methods中的至少一个。使用form-encode,符号是methods[]=GET和methods[]=OPTIONS。使用数组。
hostssemi-optional与此路由匹配的域名列表。例如:example.com。使用form-encode,符号是hosts[]= Foo.com和hosts[]= BAR.com。使用数组
pathssemi-optional与此路由匹配的路径列表。例如:/my-path。使用form-encode,符号是paths[]=/foo&paths[]=/bar。使用数组。
strip_pathoptional,default:true当通过路径之一匹配路由时,从上游请求URL中去除匹配的前缀
preserve_hostoptional,default:false当通过主机域名中的一个匹配路由时,在上游请求报头中使用请求主机头。默认情况下设置为false,上游主机头将设置为服务的主机。
servicerequired此路由关联的服务。这是路由代理流量的地方。使用form-encode,符号是service.id=<service_id>。使用JSON则是"service":{“id”:"<service_id>"}
  • 创建一个route

    POST /routes/

    curl -i -X POST \
    --url  http://localhost:8001/routes/ \
    --data 'protocols[]=http&protocols[]=https' \
    --data 'hosts[]=xxx' \
    --data 'service.id=233c7ae0-b7bb-460d-af19-8d6c815d49ee'
    
    
  • 根据route_id查询路由

    GET /routes/{id}

    curl -i -X GET \
     --url  http://localhost:8001/routes/73de4e14-7dfb-4c9e-95ce-bc297ad9b479
    
  • 查询所有路由列表

    GET /routes

    curl -i -X GET   --url  http://localhost:8001/routes/
    
    约束描述
    offsetoptional用于分页的游标。偏移量是定义列表中某个位置的对象标识符
    sizeoptional,default: 100, max:1000每页返回数量的限制
  • 查询一个服务关联的所有路由

    GET /services/{service name or id}/routes

    curl -i -X GET \
      --url  http://localhost:8001/services/example-serviceA/routes
    
  • 更新某个路由

    PATCH /routes/{id}

    curl -i -X PATCH \
      --url  http://localhost:8001/routes/3eed8a25-3b3a-44e3-999f-5e679c379972 \
      --data 'strip_path=true'
    
  • 删除某个路由

    DELETE /routes/{id}

    curl -i -X DELETE \
      --url  http://localhost:8001/routes/3eed8a25-3b3a-44e3-999f-5e679c379972 
    
3. Consumer Object

消费对象表示服务的消费者或用户。可以依赖Kong作为主要数据存储,也可以将用户自己管理的列表映射到该数据库consumer表,以保持Kong与现有主数据存储的一致性。权限控制也会依赖这个表。

属性约束描述
usernamesemi-optional消费者的唯一用户名,和custom_id至少有一个必须指定
custom_idsemi-optional用户存储的唯一id, 用来和现有数据库中的用户一一映射,若需要权限管理,必须将此字段或用户名与请求一起发送
  • 创建一个消费者

    POST /consumers/

    curl -i -X POST \
    --url  http://localhost:8001/consumers/ \
    --data 'username=smqi' \
    --data 'custom_id=10007' 
    
  • 查询消费者列表

    GET /consumers/{username or id}

    属性约束描述
    idoptional
    custom_idoptional
    usernameoptional
    sizeoptional,default:100每页返回数量
    offsetoptional用于分页的游标。偏移量是定义列表中某个位置的对象标识符
  • 更新指定消费者

    PATCH /consumers/{username or id}

  • 删除指定消费者

    DELETE /consumers/{username or id}


参考文档:
1.https://www.cnblogs.com/zhoujie/p/kong2.html
2.https://www.jianshu.com/p/a68e45bcadb6/

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值