微服务 API 网关 Kong 插件开发 – 实现自定义逻辑

简介 Kong插件允许您在 request/response 的生命周期中的几个入口点注入自定义逻辑(使用 Lua 语言),因为它由Kong代理。为此,必须实现base_plugin.lua 接口的一个或多个方法。这些方法将在命名空间下的模块中实现:kong.plugins。<plugin_name> .handler。 Module kong.plugins.<plugin_name>.handler 可用的请求上下文 插件接口允许您覆盖handler.lua文件中的以下任何方法,以在Kong的执行生命周期的各个入口点实现自定义逻辑: 函数名 LUA-NGINX-MODULE Context 描述 :init_worker() init_worker_by_lua ……

阅读全文 »

在Kong的插件中使用自建数据表的问题

目前正在开发的kong 插件中需要用到自己新建表,然后对其进行读写,但是由于kong的版本升级原因,有一些问题在官方文档中没有提到,导致一直读取失败,主要注意的点如下: 1.迁移文件的差异 kong的版本>= 1.0 迁移文件的名字为000_base_xxx.lua,其中格式格式如下: return { postgres = { up = [[ CREATE TABLE IF NOT EXISTS "xxxxx" ( "id" uuid NOT NULL DEFAULT uuid_generate_v4() PRIMARY KEY, "xx" int NOT NULL, "xx" bool, "xx" json, "xx" json ); ]], }, cassandra ={ up ……

阅读全文 »

微服务 API 网关 Kong 插件开发 – 访问数据存储区

原文地址:https://docs.konghq.com/1.1.x/plugin-development/access-the-datastore/ (不能保证所有的翻译都是准确无误的,所有如有翻译的不准确或错误之处,请一定记得查看原文,并欢迎留言指出)。 简介 Kong通过我们称为“DAOs”的类与模型层交互。本章将详细介绍与数据存储交互的可用API。Kong支持两个主数据存储:Cassandra 3.x.x和PostgreSQL 9.5+。 kong.db Kong 的所有实例表示为: 描述实体在数据存储区中与哪个表相关的模式,对其字段的约束,如外键,非空约束等…此schema是插件配置章节中描述的表。 DAO类的一个实例映射到当前正在使用的数据库(Cassandra或Po……

阅读全文 »

微服务 API 网关 Kong 插件开发 – 存储自定义实体

原文地址:https://docs.konghq.com/1.1.x/plugin-development/custom-entities/ (不能保证所有的翻译都是准确无误的,所有如有翻译的不准确或错误之处,请一定记得查看原文,并欢迎留言指出)。 介绍 虽然不是所有插件都需要它,但是您的插件可能需要在数据库中存储比配置更多的东西。在这种情况下,Kong在其主要数据存储之上提供了一个抽象,允许您存储自定义实体。 如前一章节访问数据存储区所述。Kong通过我们称之为“DAOs”的类与模型层交互,并且可以在通常被称为“DAO Factory”的单例上使用。本章将解释如何为您自己的实体提供一个抽象体。 Modules kong.plugins.<plugin_name>.daos ko……

阅读全文 »

openSSL 的加密方式与证书制作

openSSL是什么 OpenSSL项目是安全套接字层(secure sockets layer,SSL)和传输层安全(transport layer security,TLS)协议的一个实现,是大家共同努力开发出的代码可靠、功能齐全、商业级别的开源工具集。除了OpenSSL之外的其他TLS实现方式,如GnuTLS、Mozilla的网络安全服务(NSS)和Windows平台的TLS。 项目由遍布世界的志愿者所组成的社区进行管理,他们通过互联网进行沟通、计划和开发OpenSSL工具集以及相关的文档。现在几乎所有的服务器软件和很多客户端软件都在使用OpenSSL,其中基于命令行的工具是进行密钥、证书管理以及测试最常用到的软件了。 公钥算法与私钥算法 私钥算法 私钥加密算法,又称 对称加密算法,因……

阅读全文 »

微服务 API 网关 Kong 单元测试中文文档

原文链接: https://docs.konghq.com/1.0.x/plugin-development/tests/ (如有翻译的不准确或错误之处,欢迎留言指出) 集成测试:https://docs.konghq.com/1.0.x/plugin-development/tests/#write-integration-tests 介绍 如果你认真对待你写的插件,你可能想为它编写一些测试。Lua的单元测试很简单,并且可以使用许多测试框架。但是,您可能还想编写集成测试。Kong可以再次为您提供支援。 编写集成测试 Kong的首选测试框架是busted,它与resty-cli解释器一起运行,但如果您愿意,可以自由使用另一个。在Kong存储库中,可以在bin/busted找到 busted ……

阅读全文 »

微服务 API 网关 Kong 命令行中文文档

原文链接: https://docs.konghq.com/1.0.x/cli/ (如有翻译的不准确或错误之处,欢迎留言指出) 介绍 提供的CLI(命令行界面Command Line Interface)允许启动,停止和管理Kong实例。CLI可以管理本地节点(如在当前计算机上)。 如果您还没有使用,我们建议您阅读配置参考。 通用标志参数 所有命令都将一组特殊的可选标志作为参数: –help:打印此命令的帮助信息 –v:启用详细模式 –vv:启用调试模式(很多输出) 可用命令 kong check Usage: kong check <conf> 检查给定Kong配置文件的有效性。 <conf> (default /etc/kong/kong.conf) 配置文……

阅读全文 »

微服务 API 网关 Kong File Log 插件中文文档

原文链接: https://docs.konghq.com/hub/kong-inc/file-log (如有翻译的不准确或错误之处,欢迎留言指出) 将请求和响应数据写入磁盘上的日志文件中。不建议在生产中使用此插件,在生产环境下,最好使用另一个日志插件,例如syslog。由于系统限制,此插件使用阻塞文件i/o,将会损害性能,因此是Kong安装的反面模式。 注意:此插件的功能与0.10.2之前的Kong版本捆绑在一起,与此处记录的不同。 有关详细信息,请参阅CHANGELOG。 配置 在服务上启用插件 通过发出以下请求在服务上配置此插件: $ curl -X POST http://kong:8001/services/{service}/plugins \ –data “name=file……

阅读全文 »

微服务 API 网关 Kong 1.0.0 升级指南

原文地址:https://docs.konghq.com/1.0.x/upgrading/#2-deprecation-notices (不能保证所有的翻译都是准确无误的,所有如有翻译的不准确或错误之处,请一定记得查看原文,并欢迎留言指出)。 注意:以下是1.0.x的升级指南。 如果您要升级到Kong的早期版本,请阅读Kong repo中的UPGRADE.md文件。 本指南将告知您在升级时应了解的重大更改,并指导您完成正确的步骤,以便在不同的升级方案中获得不需要停止服务的迁移。 升级到 1.0.0 此版本(1.0.0) 是Kong的主要版本,包括许多新功能以及重大变化。 这个版本中引入了新的插件架构格式,Admin API 终端的更改,数据库迁移,Nginx配置更改以及已删除的配置属性。 在……

阅读全文 »

你需要好好对待你的牙齿

从去年到今年,断断续续的把自己的牙齿整治了一番,拔掉两颗智齿,洗了两次牙,跟牙科医生交流了很多,了解了很多关于牙齿的知识,结论就是:你的牙齿可以一直使用下去,哪怕你已经七老八十。可能跟请我们大家多数人的印象不太一样,觉得人老了,牙齿就必须掉的七零八落,然而事实是,如果你对自己的牙齿正视起来,并且好好保护它,它将让你七八十岁还能嚼的动爆米花。 整齐的牙齿 如果你发现你的牙齿层次不齐,纵横交错,那么你可能需要注意了,这样的牙齿会极易引发一些牙齿疾病,比如不整齐的牙齿之间容易残留食物残渣,轻则造成口气难闻,重则就容易发生龋齿,以及沉积一些牙结石,牙结石增多的情况下,就会导致牙龈出血,然后诱发牙周炎啊一些乱七八糟的牙齿疾病。而且对于咬合也是有一定影响,会导致牙齿磨损不一。 如果你还是一个青少年,可以……

阅读全文 »

微服务 API 网关 Kong CORS 插件中文文档

原文地址:https://docs.konghq.com/hub/kong-inc/cors/ (不能保证所有的翻译都是准确无误的,所有如有翻译的不准确或错误之处,请一定记得查看原文,并欢迎留言指出)。 通过启用此插件,轻松将跨源资源共享(CORS)添加到 Service, Route 。 配置 在 Service 上启用插件 通过发出以下请求在 Service 上配置此插件: $ curl -X POST http://kong:8001/services/{service}/plugins \ –data “name=cors” \ –data “config.origins=http://mockbin.com” \ –data “config.methods=GET, POST……

阅读全文 »

微服务 API 网关 Kong 插件开发添加自定义配置文件

由于在 Kong 的插件开发中,需要添加一些自定义的配置文件,而且是一些插件公用的配置,但是又不方便都写在插件的 schema.lua 中,那么就考虑引入常规的配置文件,这里以.env文件为例,写一下添加和使用过程。 首先需要了解的是,Kong 的插件使用了一个叫 Classic 的 class 机制。所有的插件都是从 base_plugin.lua 基类上继承而来。base_plugin.lua 定义了插件在各个阶段被执行的方法名:,所以我们就从这里入手,以添加redis配置信息为例。 添加配置文件 进入到插件目录,我这里是/usr/local/share/lua/5.1/kong/plugins,然后新建一个.env文件,写入: REDIS_HOST=127.0.0.1 REDIS_PA……

阅读全文 »