apisix网关使用自研插件流程
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
二,添加自研插件
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使用细节请参考官方文档