Kong插件开发

作者: meng_philip123 | 来源:发表于2018-10-13 12:28 被阅读170次

Kong插件开发文档地址:https://docs.konghq.com/0.14.x/plugin-development/

Kong 的插件使用了一个叫 Classic 的 class 机制。所有的插件都是从 base_plugin.lua 基类上继承而来。base_plugin.lua 定义了插件在各个阶段被执行的方法名:

根据方法名也可以看出,这 7 个方法对应于 OpenResty 的不同执行阶段。也就是说插件只能对外暴露出这 7 个方法名中的一个或多个才能被 Kong 的插件机制执行,接下来 Kong 会在 OpenResty 不同的执行阶段,执行插件对应的方法。

1. 插件的结构

其中 handler.lua 和 schema.lua 是必需的,上面提到的插件需要暴露出来的方法就定义在 handler.lua 中。

2. 逻辑实现

这里以 Kong 自带的 request-termination 插件为例,分析其实现原理。其 handler.lua 的头部是这样定义的:

接下来就是定义插件的公有方法:

3. 参数定义

插件的参数定义在 schema.lua 中,类似于 JSON Schema,主要用于描述插件参数的数据格式:

上面只是一个简单的应用,其实 Kong 还可以实现更为复杂的参数校验,具体可以参考这里:Plugin Development - Store Configuration

经过了前面对 Kong 插件机制的分析,这里来整理一下非官方 FAQ 以加深理解,以下 FAQ 针对于 Kong 0.12.3 版本。

1. 插件怎么用?

插件可以应用在 API 上;也可以应用在 Consumer 上;同样还能应用在指定 API 的指定 Consumer 上;当然也少不了 GLOBAL 用法。总之,Kong 插件可以有四种启用方式:

2. 一个 API 或者是 Consumer 可以添加同一个插件多次吗?

不可以。但是插件不同应用方式是可以添加相同的插件的,比如:API 可以添加 rate-limit 插件;Consumer 同样可以添加 rate-limit,只不过最后只有一个会生效。

3. 插件的执行顺序?

插件的执行顺序由插件自身的优先级唯一确定。即,Kong 一旦启动,其插件的执行顺序就已经确定,和启用插件的方式无关,并不会在运行中动态改变。Kong 默认自带插件的优先级如下(越大越优先):

4. 插件生效的优先级?

根据插件怎么用?,这里提到的四种应用方式,如果插件使用冲突的话。其生效策略优先级是:

api & consumer > consumer > api > global

5. 插件的执行阶段?

插件的执行阶段贯穿于请求生命周期中的不同阶段,不过目前大多数的插件均运行在 access 以及之后的阶段。

相关文章

  • 使用docker环境开发kong插件流程

    使用docker环境开发kong插件流程 说明:本教程适合使用docker环境开发kong插件,本教程使用的是 p...

  • KONGAPI插件开发

    背景 kong的插件开发是基于lua开发的,原理是基于lua-nginx-module的机制。kong的机制其实同...

  • Kong插件开发

    Kong插件开发文档地址:https://docs.konghq.com/0.14.x/plugin-develo...

  • Kong插件快速开发

    详细的开发文档:https://docs.konghq.com/2.0.x/plugin-development/...

  • 一、kong的介绍和安装

    Kong是一个基于Openresty开发的网关平台,可以基于插件的形式控制网关的认证、负载、限速等。 Kong默认...

  • Kong插件开发工具包

    Kong插件开发工具包 插件开发工具包(或称 PDK),是一组 Lua 方法和变量,插件可以使用这些方法和变量实现...

  • Kong插件开发指南

    What is Kong OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集...

  • Kong插件开发向导

    简介 在进一步讨论之前,这里先有必要简要阐述一下 Kong 是如何构建的,特别是它如何与Nginx集成,以及它与L...

  • Kong[nginx]-10 Kong插件开发体验(一)

    0x00 TL;DR 通过学习本文, 可以了解Kong插件的基本信息:目录规则文件名称规则您还可以看到插件代码的手...

  • kong 自定义插件开发

    1、安装插件 2、kong重新加载插件 3、查看Kong的日志 4、自定义日志打印,并且采集到ELK 5、日志输出...

网友评论

    本文标题:Kong插件开发

    本文链接:https://www.haomeiwen.com/subject/mdroaftx.html