Linux下源码安装Kong网关

kong是基于openresty构建的一个网关,并且直接带了很多的功能比如反向代理、负载均衡、限流等模块直接开箱即用,同时兼具OpenResty的高性能,大部分情况下无需编程就可以实现想要的功能,下面在CentOS8 Linux上使用源码编译的方式安装kong,kong的官网是:https://konghq.com/,github仓库:https://github.com/kong/kong

kong安装文档:https://konghq.com/install/

kong安装需要依赖好几个组件官网上给出了依赖的列表如下:

总体上这些组件可以依次手动安装但是比较麻烦,所以推荐通过kong提供的工具kong-build-tools进行安装,仓库链接为:https://github.com/Kong/kong-build-tools,可以通过git克隆下来或者在首页下载zip包下来然后解压先准备好并且进入到目录中,然后开始进行组件的安装

编译需要先安装zlib库: yum install zlib-devel ,如果不安装待会编译会提示错误,然后就可以开始使用工具安装:

这个工具也相当于一键安装了,–prefix指定这些组件的统一目录,默认是/usr/local,然后–work指定安装的工作目录,这些包如果不存在都会临时下载到这里面然后再进行编译,安装完之后就没啥用了,后面的这些参数都是文档上推荐的稳定版本,执行之后需要耐心等待下载、编译以及安装,需要几分钟的时间,安装之后到/opt/kong可以看到luarocks、openresty、openssl这3个目录,然后将下面的环境变量添加到/etc/profile中:

添加之后 source /etc/profile 然后分别执行下面的命令查看各个组件的版本:

确认没问题说明基础环境已经安装完成,然后需要安装libyaml-devel组件,否则接下来编译Kong会报错,centos8上面默认源没有libyaml-devel需要启用powertools才可以,centos7直接安装即可:

然后才可以开始安装:

然后开始编译kong:

这里选择的是2.1.0稳定版,直接下载master上面的代码其实也是可以的,如果克隆比较慢可以去仓库下载打好的tag:

然后解压到/opt/kong,再把目录名改为kong即可,总之最后的目录是:/opt/kong/kong,具体过程不再赘述,准备好之后直接安装kong:

安装的过程其实就是下载了很多lua的模块然后进行安装,正常是安装到luarocks下,可能速度非常慢,需要耐心等待如果失败了可以再次执行会继续安装,再不行需要自行解决网络问题……,最后安装成功需要继续添加下面的环境变量:

然后按照官网的说明查看kong的版本信息:

其实这里执行肯定会报错,socket或其他的模块找不到的错误,如果用rpm包安装是没问题的,原因就是lua模块安装到了/opt/kong/luarocks下,而这个路径不再默认的搜索路径下,于是继续添加下面的变量到profile:

保存并source之后,再执行上面的命令就可以看到输出的信息了

到这里kong就安装成功了,然后要正常使用还需要配置数据库,数据库支持postgresql以及cassandra,当然也可以不使用数据库,但是不使用数据库将无法添加服务以及路由,正常用于导出yml线上发布使用,这里使用的是postgresql,具体安装请参考之前的文章以及官方文档,下面直接进行kong的相关配置

在pgsql中创建角色以及数据库:

这里创建角色kong允许登录,并且设置密码为kong123456,然后创建了数据库kong并授权给角色kong,然后修改postgresql的权限配置文件:pg_hba.conf,添加远程访问的权限如下:

这里的允许ip根据实际情况设置,如果postgresql是在本地那么就没必要配置权限了,默认不用密码就可以登录,修改完配置文件重启postgresql服务即可

然后进入到kong的目录编辑配置:

然后编辑配置文件kong.conf,修改数据库部分的配置如下:

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:99781d2f-76b9-4eb9-b6e1-4d8f2623542b

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:edc525e2-9a2c-4c28-aa0b-3590437f5401

注意指定kong启动服务的时候要在目录/opt/kong/kong下,否则可能会报kong加载失败,如下:

如果觉得每次进入目录麻烦,那么直接在刚才的环境变量LUA_PATH追加path:/opt/kong/kong/?/init.lua,/opt/kong/kong下面有1个kong目录保存了相关模块的源码,因此这么配置就可以在外部加载kong这个目录了:

配置的时候要仔细看一下目录,如果你的和我这里的不一样,要根据实际的配置,然后可以启动一个独立的kong项目,kong项目启动的时候如果指定-conf会读取指定的配置如果不指定则默认会读取/etc/kong/kong.conf这个配置,所以这里我们可以将配置文件放到/etc/kong/kong.conf,之后改配置也要改这个,这样就不用每次指定配置文件了,可以方便操作:

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:90ab20fe-d4a5-426e-96c2-f17c04e8b763

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:cf4535b6-e84e-447f-a541-61e5f1ee7e64

这里–prefix指定工作目录的位置,就是和nginx默认的conf一样的结构,和上篇文章创建openresty项目的思路完全一样,如果不想指定可以修改kong.conf配置prefix参数,默认值是/usr/local/kong,修改之后就不用–prefix指定了,如果有多个项目的话其他的项目还是需要用–prefix单独指定的

kong启动之后会监听如下4个端口:

8000 – 这个是提供网关服务的端口,会侦听http客户端的流量然后转发到上游服务

8443 – 和8000一样,只是这个是侦听https流量

8001 – 配置kong admin api的端口,为了安全默认只监听127.0.0.1回环网卡

8444 – 和8001一样,管理https admin api

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:f00c6473-b38d-4e35-b9d9-3f6b6e8d933b

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:d3226c36-7b72-4677-ae30-f65f05b034f9

默认正常返回json即表示启动成功,正常返回一堆json不太好看,可以用python3的json模块或者json_pp进行格式化示例如下:

停止kong服务和重新加载配置可以使用下面的命令:

最后创建一个简单的http proxy来验证kong的功能如下:

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:3040cc49-ac7f-41f6-876a-73cca1247eeb

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:b4936c9d-4ace-49e8-9505-19dfc3c4be97

可能是资源路径的原因这里样式丢失了,这样kong的服务就全部配置好并且可以使用了,只是这个缺点是没有管理的页面导致每次用curl发送请求比较麻烦,而且官方的页面需要付费,这里推荐个比较好用的第三方界面konga:https://github.com/pantsel/konga,其他的不是版本跟不上就是有或多或少的问题,这个应该算是第三方的里面比较优秀而且功能非常全的一个了,推荐研究和使用

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:435af28b-44e7-4fcf-84bb-af0c0ccb2ffb

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:2c835c01-cb5b-49d8-a4c4-8a4e88f0a641

Original: https://www.cnblogs.com/freeweb/p/13492106.html
Author: 小得盈满
Title: Linux下源码安装Kong网关

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/562301/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球