前文介绍了 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)

从 0.14.0 开始,Konga 仅与 Kong >= 1.0.0 兼容

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

从上面安装 Konga 命令返回信息,可以看到,默认的使用了 mongo 适配器,从开头介绍可以看出 Konga 支持 MySQL,PostgresSQL,MongoDB 这几种数据库,前文安装 Kong 时连接的就是 PostgresSQL,Konga 也可以连接该 PGSQL 数据库,减少数据库部署,要问为啥不使用默认的 MongoDB,因为太吃内存了,和之前一样,我们来通过启用一个短暂的容器来准备 Konga 的数据库。

argumentdescriptiondefault
-ccommand-
-aadapter (can be postgres or mysql)-
-ufull 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基本使用

先注册账号:
konga register

登录成功后,你将看到这个页面,添加 Kong 信息:
add kong

此时,你需要手动创建与 Kong 的管理 API 的连接。如果你打开 连接(connections) 页面,你会注意到与先前创建的 Kong 实例的连接已经存在但尚未激活。点击激活按钮。如果一切设置正确,Konga 将连接到 Kong。可以看到首页的数据图:
konga dashboard

最后修改:2020 年 06 月 09 日 12 : 45 PM
如果觉得我的文章对你有用,请随意赞赏