1. 前言

kong 是一个开源的API网关,本文档描述在 Redhat 8 环境下安装部署api 网关的操作步骤。

2. 软硬件环境准备

2.1. 硬件环境

kong 安装需要两个角色的服务器:

  • 网关服务器

  • 数据库服务器

2.2. 网络端口要求

kong 需要下面一些网络端口:

目标 端口 设置 备注
any 网关服务器 80 允许 kong的代理 http服务端口
any 网关服务器 443 允许 kong的代理 https服务端口
any 网关服务器 1337 允许 konga的http服务端口
网关服务器 数据库服务器 5432 允许 postgresql serve端口

2.3. 软件环境

kong 安装需要下面的组件:

  • postgresql96-9.6.21

    kong网关及其图形管理界面konga 都需要数据库来支撑配置信息的持久化,需要 postgresql server 支持。

  • node-v13.14.0

    图形管理界面konga 是一个nodejs 支撑的web 应用,需要nodejs 运行环境。

  • kong-2.4.0

    kong api gateway 目前的最新发行版本。

  • konga.0.14.9

    konga 是kong网关的图形管理界面,目前的最新发行版本是0.14.9

所有的安装介质可以在下面地址下载:

http://ftp.postgresql.org/pub/repos/yum/9.6/redhat/rhel-8-x86_64/postgresql96-9.6.21-1PGDG.rhel8.x86_64.rpm

http://ftp.postgresql.org/pub/repos/yum/9.6/redhat/rhel-8-x86_64/postgresql96-libs-9.6.21-1PGDG.rhel8.x86_64.rpm

http://ftp.postgresql.org/pub/repos/yum/9.6/redhat/rhel-8-x86_64/postgresql96-server-9.6.21-1PGDG.rhel8.x86_64.rpm

https://nodejs.org/dist/v13.14.0/node-v13.14.0-linux-x64.tar.xz

https://download.konghq.com/gateway-2.x-rhel-8/Packages/k/kong-2.4.0.rhel8.amd64.rpm

https://github.com/pantsel/konga/archive/refs/tags/0.14.9.tar.gz

3. kong安装步骤

3.1. postgresql server 安装配置

3.1.1. 数据库服务器安装

登陆 数据库服务器

下载 postgresql server 安装包

$ cd $HOME
$ wget http://ftp.postgresql.org/pub/repos/yum/9.6/redhat/rhel-8-x86_64/postgresql96-9.6.21-1PGDG.rhel8.x86_64.rpm
$ wget http://ftp.postgresql.org/pub/repos/yum/9.6/redhat/rhel-8-x86_64/postgresql96-libs-9.6.21-1PGDG.rhel8.x86_64.rpm
$ wget http://ftp.postgresql.org/pub/repos/yum/9.6/redhat/rhel-8-x86_64/postgresql96-server-9.6.21-1PGDG.rhel8.x86_64.rpm

安装postgresql server

$ sudo rpm -i postgresql96-libs-9.6.21-1PGDG.rhel8.x86_64.rpm
$ sudo rpm -i postgresql96-9.6.21-1PGDG.rhel8.x86_64.rpm
$ sudo rpm -i postgresql96-server-9.6.21-1PGDG.rhel8.x86_64.rpm

初始化postgresql server

$ sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
$ sudo systemctl enable postgresql-9.6
$ sudo systemctl start postgresql-9.6

对postgresql server 进行配置

$ sudo -u postgres psql
postgres=# --设置允许外部连接
postgres=# alter system set listen_addresses to '0.0.0.0';
postgres=# --回收所有用户拥有的public模式的权限
postgres=# revoke all privileges on schema public from PUBLIC;
postgres=# --创建kong数据库服务器账号,密码请替换为符合安全要求的密码
postgres=# create user kong with password 'XXXXXX';
postgres=# --创建kong数据库
postgres=# create database kong owner kong;
postgres=# --创建konga数据库服务器账号,密码请替换为符合安全要求的密码
postgres=# create user konga with password 'XXXXXX';
postgres=# --创建konga数据库
postgres=# create database konga owner konga;
postgres=# --退出psql
postgres=# \q

修改 /var/lib/pgsql/9.6/data/pg_hba.conf 文件,设置一条如下的记录,允许客户端通过md5密码方式访问数据库服务器

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             all                     md5

在防火墙中加入允许postgresql server端口的策略

$ sudo firewall-cmd --add-service=postgresql
$ sudo firewall-cmd --runtime-to-permanent

重启postgresql server

$ sudo systemctl restart postgresql-9.6.service

3.1.2. 客户端安装

登陆 网关服务器

下载 postgresql 客户端 安装包

$ cd $HOME
$ wget http://ftp.postgresql.org/pub/repos/yum/9.6/redhat/rhel-8-x86_64/postgresql96-9.6.21-1PGDG.rhel8.x86_64.rpm
$ wget http://ftp.postgresql.org/pub/repos/yum/9.6/redhat/rhel-8-x86_64/postgresql96-libs-9.6.21-1PGDG.rhel8.x86_64.rpm

安装 postgresql 客户端

$ sudo rpm -i postgresql96-libs-9.6.21-1PGDG.rhel8.x86_64.rpm
$ sudo rpm -i postgresql96-9.6.21-1PGDG.rhel8.x86_64.rpm

3.1.3. 数据库连接验证

登陆 网关服务器,验证通过账号密码可以正常连接 数据库:

输入下面的命令并按回车,(10.0.3.10 请替换为你的数据库服务器的IP地址)按提示输入kong账号的密码后,如果能成功连接到kong数据库,则表明数据库已经正常配置好了。

$ psql -h 10.0.3.10 -U kong -W
$ psql -h 10.0.3.10 -U konga -W

3.2. nodejs 安装配置

登陆 网关服务器

下载nodejs 安装包

$ cd $HOME
$ wget https://nodejs.org/dist/v13.14.0/node-v13.14.0-linux-x64.tar.xz

安装nodejs

$ tar xvf node-v13.14.0-linux-x64.tar.xz
$ sudo ln -s $HOME/node-v13.14.0-linux-x64/bin/node /usr/bin/
$ sudo ln -s $HOME/node-v13.14.0-linux-x64/bin/npm /usr/bin/

验证node 及 npm 可以正常运行

$ node -v
v13.14.0
$ npm -v
6.14.4

3.3. kong 安装配置

登陆 网关服务器

下载kong 安装包

$ cd $HOME
$ wget https://download.konghq.com/gateway-2.x-rhel-8/Packages/k/kong-2.4.0.rhel8.amd64.rpm](https://download.konghq.com/gateway-2.x-rhel-8/Packages/k/kong-2.4.0.rhel8.amd64.rpm

安装kong

cd $HOME
$ sudo yum localinstall kong-2.4.0.rhel8.amd64.rpm

创建kong 配置文件

$ sudo cp /etc/kong/kong.conf.default /etc/kong/kong.conf

修改 /etc/kong/kong.conf 文件,设置代理服务监听端口和 管理服务监听端口。pg_host 设置为数据库服务器的IP地址,pg_password修改为 3.1. 设置的kong账号密码

proxy_listen = 0.0.0.0:80 reuseport backlog=16384, 0.0.0.0:443 http2 ssl reuseport backlog=16384
admin_listen = 127.0.0.1:8001 reuseport backlog=16384, 127.0.0.1:8444 http2 ssl reuseport backlog=16384

database = postgres
pg_host = 10.0.3.10
pg_port = 5432
pg_user = kong
pg_password = XXXXXX
pg_database = kong

初始化kong

$ sudo su kong
$ /usr/local/bin/kong migrations bootstrap -c /etc/kong/kong.conf
$ exit

设置防火墙规则

 $ sudo firewall-cmd --add-service=http
 $ sudo firewall-cmd --add-service=https
 $ sudo firewall-cmd --runtime-to-permanent

启动kong

$ sudo systemctl start kong

验证 kong 已经运行

$ curl http://127.0.0.1:8001
$ curl http://127.0.0.1

3.4. konga 安装配置

登陆 网关服务器

下载konga 安装包

$ cd $HOME
$ wget http://10.100.30.44/rpm/konga-0.14.9.tar.gz
$ wget https://github.com/pantsel/konga/archive/refs/tags/0.14.9.tar.gz
$ mv 0.14.9.tar.gz konga-0.14.9.tar.gz

安装konga

$ tar xvf konga-0.14.9.tar.gz

修改运行环境变量文件 $HOME/konga-0.14.9/.env ,DB_PASSWORD修改为 3.1. 设置的konga账号密码,DB_HOST 修改为数据库服务器的IP地址

PORT=1337
NODE_ENV=production
KONGA_HOOK_TIMEOUT=120000
DB_ADAPTER=postgres
DB_HOST=10.0.3.10
DB_PORT=5432
DB_USER=konga
DB_DATABASE=konga
DB_PASSWORD=XXXXXX
KONGA_LOG_LEVEL=warn
TOKEN_SECRET=some_secret_token

初始化konga数据库, 下面命令中XXXXXX替换为3.1. 设置的konga账号密码, 10.0.3.10 替换为数据库服务器的IP地址

$ cd $HOME/konga-0.14.9
$ ./start.sh -c prepare -a postgres -u postgresql://konga:"XXXXXX"@10.0.3.10:5432/konga

启动 konga 服务

$ cd $HOME/konga-0.14.9
$ nohup ./start.sh >/dev/null&

设置防火墙规则

$ sudo firewall-cmd --add-port=1337/tcp
$ sudo firewall-cmd --runtime-to-permanent

验证 konga 已经运行

$ curl http://127.0.0.1:1337

正常退出ssh 会话,避免运行konga的node 进程被终止

$ exit

image-20210503214049910

  • 设置 KONGA 管理员账号、邮件地址和命名,按CREATE ADMIN 按钮创建管理员账号。 出现下面的登陆界面,如下图:

image-20210503214109970

  • 输入刚才登记的管理员账号密码,进入konga 管理界面,如下图:

image-20210503214125597

  • 登记需要管理的kong网关的地址,由于konga 和kong 安装在一起,可以输入http://127.0.0.1:8001, 点击CREATEC ONNECTION 按钮,完成kong网关登记, 如下图:

image-20210503214146989