apisix网关使用自研插件流程

发布时间 2023-04-23 16:19:14作者: 戴红领巾的少年

1. 关于apisix网关插件

apisix插件分为内置插件和自编插件,本文主要介绍使用自研插件的流程,内置插件使用方法参考官方文档

内置插件官方文档:https://apisix.apache.org/zh/docs/apisix/plugins/batch-requests/

2. 使用自研插件的实现步骤

apisix支持多种语言自研插件,本文主要介绍使用go语言编写自研脚本。

自研插件官方文档:https://apisix.apache.org/zh/docs/apisix/external-plugin/

自研插件使用前期配置工作

一,在value.yaml中增加配置Plugin Runner

image

二,添加自研插件

1,构建包含自研插件的apisix镜像

clone项目到本地

git clone https://github.com/apache/apisix-go-plugin-runner.git

cmd文件夹是存放插件的目录,我们开发的Go插件api_signature.go将放在cmd/go-runner/plugins这里。看一下cmd文件目录组织方式

root@JamesLee:/mnt/d/code/apisix-go-plugin-runner# tree cmd
cmd
└── go-runner
    ├── main.go
    ├── main_test.go
    ├── plugins
    │   ├── fault_injection.go
    │   ├── fault_injection_test.go
    │   ├── limit_req.go
    │   ├── limit_req_test.go
    │   ├── response_rewrite.go
    │   ├── response_rewrite_test.go
    │   ├── api_signature.go
    │   ├── say.go
    │   └── say_test.go    
    └── version.go

插件代码完成后,在项目根目录下进行make build, 正常情况下就在本目录下生成二进制文件go-runner。

build 包含自研插件的镜像

Dockerfile如下

FROM apache/apisix:3.2.0-debian 
COPY ./go-runner /usr/local/apisix-go-plugin-runner/go-runner

docker build -f Dockerfile -t apache/apisix:3.2.0-debian-gogogo .

apisix使用apache/apisix:3.2.0-debian-gogogo镜像

三,使用自研插件

创建路由时增加plugins字段即

"plugins": {
    "ext-plugin-pre-req": {
      "allow_degradation": false,
      "conf": [
        {
          "name": "api-signature",
          "value": "{\"ccc\":\"eeee\"}"
        }
      ]
    }

也可通过dashboard添加插件,需在插件ext-plugin-pre-req数据编辑器内输入如下内容

{
  "_meta": {
    "disable": false
  },
  "conf": [
    {
      "name": "api-signature",
      "value": "{\"ccc\":\"eeee\"}"
    }
  ]
}

至此,添加自研插件配置过程完毕,更多apisix使用细节请参考官方文档