前文介绍了 Kong 以及如何安装,Kong 虽然很强大,但是在管理方式上比较单一只能通过 API 请求来管理,那么有没有一个GUI 界面的管理工具呢?这里就要说到 Kong 的管理 GUI Konga。
Why Konga?
当前 Kong 的社区版是没有 dashboard 的,但是付费的企业版是有带的,并且还有一些企业版才能使用的插件以及升级后的企业版插件。所以对于使用社区版的用户而言,排除自己去撸一个 dashboard 的这种选择,第三方开源的 dashboard 无疑是首选。当前 GitHub 上还在更新维护的 dashboard 有三个,分别是 kong-dashboard,kongdash 和 konga。
说到 Kong 的管理 GUI,网上说的比较多的都是 kong-dashboard,但目前最新版(v3.6.0)似乎并未支持最新版本的 Kong。而目前在 github 能找到 star 比较多的就是 konga 了。konga 不仅支持了 Kong 的最新版本(service 和 route 的拆分新特性)同时支持管理员的权限控制和多个 Kong 连接池的管理。Konga 由于自带了用户权限控制和 Kong 连接池管理,所以需要一些数据持久化处理。默认支持的数据库有 mongodb、postgres、mysql。这里我们选择的是 PostgresSQL,原因是 Kong 连接的数据库也是 PGSQL,这样可以减少数据库的部署。
附上:
Kong 官网:https://konghq.com/
Kong GitHub地址:https://github.com/kong/kong
kong-dashboard GitHub地址:https://github.com/PGBI/kong-dashboard
kongdash GitHub地址:https://github.com/ajaysreedhar/kongdash
konga GitHub地址:https://github.com/pantsel/konga
Konga特性
Konga 带来的一个最大的便利就是可以很好的通过 GUI 观察到现在 Kong 的所有的配置,并且可以对于管理的 Kong 节点情况进行查看、监控预警,Konga 的主要特性如下:
- 管理所有 Kong Admin API 对象
- 管理多个 Kong 节点
- 使用快照备份,还原和迁移 Kong 节点
- 使用运行状况检查监视节点和 API 状态
- 电子邮件和异常信息通知
- 多用户管理
- 易于数据库集成(MySQL,PostgresSQL,MongoDB)
Docker安装Konga
安装当然使用最简单和最方便的 Docker
docker pull pantsel/konga
docker run -p 1337:1337 \
--network kong-net \
--name konga \
-e "NODE_ENV=production" \
-e "TOKEN_SECRET=lyafei" \
pantsel/konga
[root@izbp12g2yvanoh4aaqyse0z ~]# docker run -p 1337:1337 \
> --network kong-net \
> --name konga \
> -e "NODE_ENV=production" \
> -e "TOKEN_SECRET=lyafei" \
> pantsel/konga
The default `sails-disk` adapter is not designed for use as a production database;
(it stores the entire contents of your database in memory)
Instead, please use another adapter; e.g. sails-postgresql or sails-mongo.
For more info, see: http://sailsjs.org/documentation/concepts/deployment
To hide this warning message, enable `sails.config.orm.skipProductionWarnings`.
安装完成之后直接访问 1337
端口即可访问 Konga 首页,并且注册自己的账号
从上面安装 Konga 命令返回信息,可以看到,默认的使用了 mongo 适配器,从开头介绍可以看出 Konga 支持 MySQL,PostgresSQL,MongoDB 这几种数据库,前文安装 Kong 时连接的就是 PostgresSQL,Konga 也可以连接该 PGSQL 数据库,减少数据库部署,要问为啥不使用默认的 MongoDB,因为太吃内存了,和之前一样,我们来通过启用一个短暂的容器来准备 Konga 的数据库。
argument | description | default |
---|---|---|
-c | command | - |
-a | adapter (can be postgres or mysql) | - |
-u | full database connection url | - |
docker run --rm \
--network=kong-net \
pantsel/konga \
-c prepare \
-a postgres \
-u postgresql://kong:kong@kong-database:5432/konga
[root@izbp12g2yvanoh4aaqyse0z ~]# docker run --rm --network=kong-net pantsel/konga -c prepare -a postgres -u postgresql://kong:kong@kong-database:5432/konga
debug: Preparing database...
Using postgres DB Adapter.
Database exists. Continue...
debug: Hook:api_health_checks:process() called
debug: Hook:health_checks:process() called
debug: Hook:start-scheduled-snapshots:process() called
debug: Hook:upstream_health_checks:process() called
debug: Hook:user_events_hook:process() called
debug: Seeding User...
debug: User seed planted
debug: Seeding Kongnode...
debug: Kongnode seed planted
debug: Seeding Emailtransport...
debug: Emailtransport seed planted
debug: Database migrations completed!
数据库初始化成功后,就可以启动 Konga 了
docker run -p 1337:1337 \
--network=kong-net \
-e "TOKEN_SECRET=lyafei" \
-e "DB_ADAPTER=postgres" \
-e "DB_HOST=kong-database" \
-e "DB_PORT=5432" \
-e "DB_USER=kong" \
-e "DB_PASSWORD=kong" \
-e "DB_DATABASE=konga" \
-e "NODE_ENV=production" \
--name konga \
pantsel/konga
这个时候再访问 http://{your server's public ip}:1337
就可以看到 Konga 的首页啦!
Konga基本使用
先注册账号:
登录成功后,你将看到这个页面,添加 Kong 信息:
此时,你需要手动创建与 Kong 的管理 API 的连接。如果你打开 连接(connections) 页面,你会注意到与先前创建的 Kong 实例的连接已经存在但尚未激活。点击激活按钮。如果一切设置正确,Konga 将连接到 Kong。可以看到首页的数据图:
kong admin url为啥是填kong:8001