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
所有的安装介质可以在下面地址下载:
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
- 在桌面电脑,使用浏览器访问 http://网关服务器IP:1337 ,出现下面的画面
- 设置 KONGA 管理员账号、邮件地址和命名,按CREATE ADMIN 按钮创建管理员账号。 出现下面的登陆界面,如下图:
- 输入刚才登记的管理员账号密码,进入konga 管理界面,如下图:
- 登记需要管理的kong网关的地址,由于konga 和kong 安装在一起,可以输入http://127.0.0.1:8001, 点击CREATEC ONNECTION 按钮,完成kong网关登记, 如下图: