APISIX入门使用

        关于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入门操作

        所有的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 要更新的属性,全量更新该属性的数据,其他不涉及的属性会原样保留。

常用的相关操作命令示例:

查询:

curl http://127.0.0.1:9080/apisix/admin/services -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1'
  1.  X-API-KEY: edd1c9f034335f136f87ad84b625c8f1 是 Admin API 的访问 Token,可以在 APISIX 的配置文件 apisix_conf/config.yaml 中找到
  2. services可以替换为routes或upstream或consumers等对应的组件名称进行查询

创建

curl -X PUT http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -i -d '
{
    "methods": ["GET"],
    "uri": "/web1",
    "upstream": {
        "type": "roundrobin",
        "nodes": {
            "web1:80": 1
        }
    }
}'

        代码含义:将web1 服务添加到路由中,路由的含义是当请求的方法是 GET 且请求的路径是 /web1 时,APISIX 就将请求转发到上游服务 web1:80。

  注意在创建路由的时候routes后的/1如果已经存在会直接覆盖,所以创建前需要先查询一下当前的路由ID

        如果上游信息需要在不同的路由中复用,我们可以先创建一个 上游(Upstream):

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

        然后在创建路由时直接使用 upstream_id 即可:

curl -X PUT http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -i -d '
{
    "methods": ["GET"],
    "uri": "/web1",
    "upstream_id": "1"
}'

删除

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

 

你可能感兴趣的:(apisix,网关,Admin,api)