基于docker的apisix网关的java插件开发

1 创建java插件项目

1.1 从github上获取demo

java插件示例demo

1.2 改造demo

        将java插件示例demo拉取下来后,我们找到DemoFilter.java文件,在这个文件中可以修改过滤器的名称,为了方便测试,其他的文件暂时不需要修改。后期等过滤器调通后,可在过滤器中编写代码来实现自己的业务需求。过滤器名称为AuthFilter,后面在apisix路由中配置过滤插件时需要用到。

@Override
public String name() {
    return "AuthFilter";
}

修改项目java运行及maven打包环境的jdk均为jdk11。

<properties>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

2 快速部署

2.1 重新制作apisix镜像

在服务器上创建/home/capability_open_platform_filter目录,上传java插件jar包,dockerfile文件,jdk11文件至目录。
在这里插入图片描述

Dockerfile

FROM apache/apisix:3.0.0-centos
# 指定镜像创建者信息
MAINTAINER cisco
# 将宿主机的文件拷贝到容器的具体目录中。这里使用ADD,拷贝后自动解压,如果不需要解压,可以使用COPY
ADD jdk-11.0.17_linux-x64_bin.tar.gz /jdk
ADD gateway-1.0-SNAPSHOT.jar /opt/apisix-runner-bin/gateway-1.0-SNAPSHOT.jar
## 配置jdk环境
ENV JAVA_HOME /jdk/jdk-11.0.17
ENV PATH ${JAVA_HOME}/bin:$PATH
# 设置字符集
ENV LANG C.utf8

构建镜像

docker build -t apisix-jdk11 .

2.2 修改/apisix-docker/example/apisix_conf/config.yaml

开启apisix网关ext-plugin-pre-req请求前置插件,ext-plugin-post-resp响应后置插件,并配置java插件运行指令。

plugins:
  - ext-plugin-pre-req     # 请求前置插件
  - ext-plugin-post-resp   # 响应后置插件

ext-plugin:
  cmd: ['java', '-Dfile.encoding=UTF-8', '-jar', '/opt/apisix-runner-bin/gateway-1.0-SNAPSHOT.jar']

在这里插入图片描述

2.3 修改/apisix-docker/example/docker-compose.yml

修改默认的apisix镜像为我们新制作的镜像名称

apisix:
  image: apisix-jdk11:latest

在这里插入图片描述

2.4 重新启动apisix网关

切换目录至/usr/local/apisix-docker/example,执行指令docker-compose -p docker-apisix up -d重启启动apisix网关。切换目录至/usr/local/apisix-docker/example/apisix_log,执行指令tail -200f error.log查看java插件是否运行成功,看到如下图控制台打印的信息,就说明java插件启动成功。
在这里插入图片描述

3 apisix网关路由配置插件

在这里插入图片描述

3.1 ext-plugin-pre-req

ext-plugin-pre-req插件用于在执行内置 Lua 插件之前和在 Plugin Runner 内运行特定的 External Plugin。

"ext-plugin-pre-req": {
  "allow_degradation": false,
  "conf": [
    {
      "name": "AuthFilter",
      "value": "authFilter"
    }
  ],
  "disable": false
}

3.2 ext-plugin-post-resp

ext-plugin-post-resp 插件用于在执行内置 Lua 插件之前和在 Plugin Runner 内运行特定的 External Plugin。
ext-plugin-post-resp 插件将在请求获取到上游的响应之后执行。

"ext-plugin-post-resp": {
  "allow_degradation": false,
  "conf": [
    {
      "name": "AuthFilter",
      "value": "authFilter"
    }
  ],
  "disable": false
}

5 验证java插件是否生效

        发起apisix网关的请求,请求匹配到具体的路由,路由中配置了拦截器,切换目录至/usr/local/apisix-docker/example/apisix_log,执行指令tail -200f error.log,查看是否打印插件中的日志信息,打印了代表插件执行成功。

6 参考博客

1.基于docker的apisix网关的java插件开发
2.Apache APISIX v3.0 中文文档
3.java插件demo
4.apisix官网

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值