hongliang5316 / kong-plugin-demo

腾讯云云原生网关Kong自定义插件示例

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

kong-plugin-demo

一个简单的 Kong 自定义插件示例,插件执行的逻辑是,读取 X-Request-Base64 请求 header 的字符串参数,然后对这个字符串执行 base64 解码,解码结果通过 header X-Response-Decoded 返回。

在腾讯云云原生网关Kong中安装该插件:

git clone https://github.com/hongliang5316/kong-plugin-demo.git
cd kong-plugin-demo
# 将插件打成zip包
zip -q -r demo.zip demo
ls demo.zip

demo.zip可直接在腾讯云云原生网关Kong上进行自定义插件的上传以及安装

插件的配置可在Konga控制台中配置, 或者通过Kong admin-api来配置

以下是通过Kong admin-api的方式配置:

$ curl -s http://localhost:8001/plugins/enabled | grep demo

上面让 Kong 加载到这个插件,但还没有开启,没有真正执行。现在来试下开启这个插件。

通过调用 Kong 提供的 Admin API,让 Kong 创建了名为 example.serviceserviceservice 指向的上游服务是 http://httpbin.org。然后,在 example.service 上添加 route,规则是让请求路径前缀为 / 的请求全部转发到这个 service

# 添加 service
$ curl -XPOST -H 'Content-Type: application/json' \
     -d '{"name":"example.service","url":"http://httpbin.org"}' \
     http://localhost:8001/services/

# 在 service 上添加 route
$ curl -XPOST -H 'Content-Type: application/json' \
     -d '{"paths":["/"],"strip_path":false}' \
     http://localhost:8001/services/example.service/routes

验证接口转发情况:

$ curl -i http://localhost:8000/status/200
HTTP/1.1 200 OK
...
Via: kong/1.5.1

现在在 example.service 这个 service 开启 demo 插件:

# 在 service 上开启 demo 插件
$ curl -XPOST --data "name=demo" \
       http://localhost:8001/services/example.service/plugins

验证插件执行情况:

$ curl -i -H 'X-Request-Base64: aGVsbG8ga29uZw==' http://localhost:8000/status/200
HTTP/1.1 200 OK
...
X-Response-Decoded: hello kong
...
Via: kong/1.5.1

可以看到,请求头的 aGVsbG8ga29uZw==,被成功解码为 hello kong

参考:

About

腾讯云云原生网关Kong自定义插件示例