APISIX 之 Admin API入门使用

        关于apisix的安装不过多介绍,网上有很多相关示例,也可以参照官方给出的示例进行安装(官方地址:Architecture | Apache APISIX),dashboard使用也不过多介绍这里主要介绍一下apisix的Admin API控制使用。

一、APISIX简介

        Apache APISIX 是基于 Nginx/OpenResty + Lua 方案打造的一款 动态实时高性能云原生 API 网关,提供了负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。

二、相关概念/组件描述

概念/组件描述
Route通过路由定义规则来匹配客户端请求,根据匹配结果加载并执行相应的插件,最后把请求转发给到指定的上游应用。
Upstream上游的作用是按照配置规则对服务节点进行负载均衡,它的地址信息可以直接配置到路由或服务上。
Service服务由路由中公共的插件配置、上游目标信息组合而成。服务与路由、上游关联,一个服务可对应一组上游节点、可被多条路由绑定。
Consumer消费者是路由的消费方,形式包括开发者、最终用户、API 调用等。创建消费者时,需绑定至少一个认证类插件。
Admin API用户可以通过 Admin API 控制 APISIX 实例

三、Admin API路由route示例操作说明

        所有的Admin API 都采用Restful 风格,路由资源请求地址为 /apisix/admin/routes/{id},我们可以通过不同的 HTTP 方法来查询、新增、编辑或删除路由资源:

  • GET /apisix/admin/routes - 获取资源列表;
  • GET /apisix/admin/routes/{id} - 获取资源;
  • PUT /apisix/admin/routes/{id} - 根据 id 创建资源;
  • POST /apisix/admin/routes - 创建资源,id 将会自动生成;
  • DELETE /apisix/admin/routes/{id} - 删除指定资源;
  • PATCH /apisix/admin/routes/{id} - 标准 PATCH,修改指定 Route 的部分属性,其他不涉及的属性会原样保留;
  • PATCH /apisix/admin/routes/{id}/{path} - SubPath PATCH,通过 {path} 指定 Route 要更新的属性,全量更新该属性的数据,其他不涉及的属性会原样保留。

   【详情及其他相关的upstrem、service、consumer等操作具体可以查看 (官方示例)】

     下面介绍一下常用的流程操作

四、查询操作命令

        1、查询service列表

curl http://127.0.0.1:9080/apisix/admin/services -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1'

        2、查询route列表

curl http://127.0.0.1:9080/apisix/admin/routes -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1'

        3、查询upstream列表

curl http://127.0.0.1:9080/apisix/admin/upstreams -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1'

        4、查询consumer列表

curl http://127.0.0.1:9080/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1'

五、创建路由Route及上游Upstream

      1、方式一:直接创建包含upstream的route

curl http://127.0.0.1:9080/apisix/admin/routes/1 \
 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
  "methods": ["POST"],
  "host": "127.0.0.1",
  "uri": "/api/shop/order",
  "plugins":{
  },
  "upstream": {
    "type": "roundrobin",
    "nodes": {
      "127.0.0.1:9000": 1
    }
  }
}'

 路由规则说明:
        当满足以下所有规则的时候,请求将被转发到上游服务
    a、请求方法类型为POST;
    b、请求头包含 host 字段,且它的值为 127.0.0.1;
    c、请求路径匹配/api/shop/order;

注意:
        创建命令中http://127.0.0.1:9080/apisix/admin/routes/1后的1为routes_id,如果已经存在会直接进行覆盖,所以创建前需使用查询命令查询当前该用的编号。防止覆盖掉已有的路由。

        2、方式二:先创建upstream,在创建route使用upstream_id进行绑定

        a.创建upstream

curl "http://127.0.0.1:9080/apisix/admin/upstreams/1" -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
  "type": "roundrobin",
  "nodes": {
    127.0.0.1:9000": 1
  }
}'

        nodes中:127.0.0.1:3007后的数字代表权重

注意:

        创建命令中http://127.0.0.1:9080/apisix/admin/upstreams/1后1为upstreams_id,如果已经存在会直接进行覆盖,所以创建前需使用查询命令查询当前该用的编号。防止覆盖掉已有的路由

         b.创建route,使用upstream_id进行绑定

curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
  "methods": ["POST"],
  "host": "127.0.0.1",
  "uri": "/api/shop/order",
  "plugins":{
  },
  "upstream_id": "1"
}'

六、创建消费者Consumer

curl http://127.0.0.1:9080/apisix/admin/consumers -H 'X-API-KEY:edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
  "username": "test",
  "plugins":{
	"key-auth": {
    	  "key": "abcdefghijklmnopqrstuvwxyz"
    	}
  }
}'

 说明:

        插件中提供了很多种不同的认证插件,这里选取的是key-auth,可参考官方文档选择适合自己的插件:Authentication插件列表 ,此步操作等同于启用了key-auth插件

七、绑定Consumer与Route

        方式一:对指定路由启用Key认证,通过route_id进行指定

curl -i "http://127.0.0.1:9080/apisix/admin/routes/1?api_key=edd1c9f034335f136f87ad84b625c8f1" -X PATCH -d '
{
  "plugins": {
    "key-auth": {}
  }
}'

         方式二:在创建路由的时候就直接启动对应的认证插件

curl http://127.0.0.1:9080/apisix/admin/routes/1  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
  "methods": ["POST"],
  "host": "127.0.0.1",
  "uri": "/api/shop/order",
  "plugins":{
	"key-auth":{}
  },
  "upstream": {
    "type": "roundrobin",
    "nodes": {
      "127.0.0.1:9000": 1
    }
  }
}'

八、调用执行

curl -F '参数1'  -F '参数2'  -F '参数3'  -F '参数N'    \
 -X POST http://127.0.0.1.9080/api/shop/order\
-H 'apikey: abcdefghijklmnopqrstuvwxyz'

说明:

        使用F添加参数,使用H添加相关的认证参数

        另外当参数为file文件类型时,需在前面加@代表本地文件:eg: curl -F ‘file=@/home/a.txt’ ....

九、删除操作命令

(1)删除route和upstream
        通过route_id或upstream_id进行删除

curl -X DELETE http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1'

curl -X DELETE http://127.0.0.1:9080/apisix/admin/upstreams/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1'

(2)删除consumer
        通过username进行删除

curl -X DELETE http://127.0.0.1:9080/apisix/admin/consumers/test -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1'

(3)upstream删除node

curl "http://127.0.0.1:9080/apisix/admin/upstreams/1" \
 -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PATCH -d '
{
  "nodes": {
    127.0.0.1:9000": 1
  }
}'

  • 19
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郝南过

感谢大佬打赏,送你一个么么哒

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值