kong插件开发-环境篇

Kong是一个api网关,是在Nginx基础上构建的,更确切地说,kong是在Nginx中运行的Lua应用程序,由 lua-nginx-module实现,与 OpenResty一起发行。
关于Kong插件开发,实际上也可以理解为Lua程序的编写,本文采用的是vscode+lua扩展(如EmmyLua)作为IDE进行开发的,其中值得注意的是Lua的编译器采用的是LuaJIT,详情可参考OpenResty最佳实践一书(开源书籍,包括了Lua & Nginx& Lua Module & OpenResty开发测试等内容)

0 kong开发环境搭建

Kong 的安装(部署)方式较为多样,支持多种操作环境,如Docker,Ubuntu,CentOS,MacOS系统等等,详情可见Kong安装 ,但其开发环境却是有些受限,在windows系统中表现尤为明显。 在Windos系统中,本人做了如下尝试:

  • 通过Docker搭建开发环境,由于电脑环境限制,未取得良好效果;
  • 通过运行Linux虚拟机搭建开发环境,可行但Linux虚拟机不是很稳定;
  • 直接安装Linux[Ubuntu]系统,进行开发。

实际就是你要有个稳定运行的Linux系统,联网的,233~ (这些尝试可以理解为搭建Linux环境出问题了囧~)

1 前置条件

  • 系统准备
    • Linux系统(如Ubuntu),可通过visualbox搭建虚拟机环境或者安装Linux双系统;
  • 软件准备
    • git 源码管理
    • konga,用于kong admin api管理的GUI WEB界面,可在测试插件功能时候使用
    • node & npm,安装konga所需的必要的工具
    • mysql,使用konga 需要使用的数据库
    • postgress,必须,运行Kong需要使用的数据库
    • pgAdmin4,postgres的GUI管理工具
    • vscode,Lua插件开发选用的IDE
    • ……
  • 知识准备
    • Kong、OpenResty & Nginx 等相关知识
    • Lua 语言基础

2 开始

2.1 获取Kong源码

从github上获取最新源码

smj@smj-ubuntu:~$  mkdir workspace
smj@smj-ubuntu:~$  cd workspace/
smj@smj-ubuntu:~/workspace$ git clone https://github.com/Kong/kong.git
正克隆到 'kong'...

Kong 源码文件包含内容如下:
kong 源码文件夹

2.2 准备IDE(VSCODE)

  1. 在vscode extends 搜索emmyLua插件直接安装,或者通过离线安装方式加载
    EmmyLua
  2. 配置EmmyLua插件,文件>>首选项>>设置,搜索emmylua设置JAVA_HOME选项,(settings.json)设置如下:
{
    "terminal.integrated.shell.linux": "/bin/bash",
    "editor.mouseWheelZoom": true,
    "[lua]": {
        "editor.defaultFormatter": "trixnz.vscode-lua"
    },
    "terminal.explorerKind": "external",
    "terminal.integrated.fontFamily": "monospace",
    "emmylua.java.home":  "/opt/java/jdk1.8.0_181", 
}

如果Linux系统无java环境,请先安装java环境,可参考Ubuntu安装java8

3 加载Kong源码文件,即可看到Lua文件的高亮的显示(编写Lua也会有相应的代码提示)

上述前置环境准备就绪(不要急 还没到开发~),接下来还有配置

3 Kong环境配置

If you are planning on developing on Kong, you’ll need a development installation. The next branch holds the latest unreleased source code. --from github-kong

本文主要以源码编译方式进行插件开发及验证,可参考官方文档源码编译指南的文档

拥有Linux开发环境(虚拟或裸机)后,还需要一些初始化工作,包括有(1)必要的软件包,包括编译器,工具和编译其他内容所需的库等:(2) OpenResty系统,包括Nginx,LuaJIT,PCRE等;
(3)数据库,Kong使用Posgres,Cassandra和Redis。

3.1 获取相关依赖

以Ubuntu系统为例,使用root 或者sudo角色安装下列依赖(基本涵盖了所需的软件包):

$: apt-get update
$: apt-get install \
        automake \
        build-essential \
        curl \
        docker \
        docker-compose \
        git \
        libpcre3 \
        libyaml-dev \
        m4 \
        openssl \
        perl \
        procps \
        unzip \
        zlib1g-dev

获取OpenResty(暂时可忽略该步骤,本文不涉及)

 $:  git clone https://github.com/kong/openresty-build-tools
 $:  cd openresty-build-tools
 $: ./kong-ngx-build -p build \
      --openresty 1.15.8.2 \
      --openssl 1.1.1d \
      --luarocks 3.2.1 \
      --pcre 8.43

3.2 配置

注意:此处配置并非唯一确定的

根据不同的开发方式进行不同设置,本文是在源码基础上进行插件扩展开发,需要进行如下设置:
打开源码目录,需要修改2个文件:

  1. bin/kong
    修改首行 #!/usr/bin/env resty => #!/usr/local/openresty/bin/resty
    其中"/usr/local/openresty"为本机openresty实际安装路径 ,根据实际情况而定
  2. kong/templates/kong_defaults.lua
    第2行,prefix = /usr/local/kong/,表示kong安装目录,可选默认或自定义修改
    第10行,plugins后面添加自己即将定义的plugin名称
    如定义了hello-world插件,修改为plugins = bundled,hello-world,其中bundled 表示kong自带的开源插件

上述配置完成即可写自己的插件了,
kong/plugins/目录下新建自定义插件,如hello-world ,
即可进行自定义插件开发!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值