docker容器搭建kong-dashboard或konga

Kong 是在客户端和(微)服务间转发 API 通讯的 API 网关,经过插件扩展功能。Kong 有html

两个主要组件:
Kong Server :基于 nginx 的服务器,用来接收 API 请求。
Apache Cassandra :用来存储操做数据。
你能够经过增长更多 Kong Server 机器对 Kong 服务进行水平扩展,经过前置的负载均衡器向这些机器分发请求。根据文档描述,两个 Cassandra 节点就足以支撑绝大多数状况,但若是网络很是拥挤,能够考虑适当增长更多节点。mysql


对于开源社区来讲,Kong 中最诱人的一个特性是能够经过插件扩展已有功能,这些插件在 API 请求响应循环的生命周期中被执行。插件使用 Lua 编写,并且 Kong 还有以下几个基础功能:HTTP 基本认证、密钥认证、CORS( Cross-origin Resource Sharing,跨域资源共享)、TCP、UDP、文件日志、API 请求限流、请求转发以及 nginx 监控。nginx


Kong 包可运行在某些 Linux 发行版、Mac OS X 和 Docker 中,不管是本地机仍是云端服务器皆可运行。git

除了免费的开源版本,Mashape 还提供了付费的企业版,其中包括技术支持、使用培训服务以及API 分析插件。github

docker容器搭建kong-dashboard或konga

安装前准备web

安装好docker稳定版本
会docker 的基本使用
了解kong概念和使用(文档地址: https://getkong.org/docs/
概念术语
upstream: 是对上游服务器的抽象;
target: 表明了一个物理服务,是 ip + port 的抽象;
service: 是抽象层面的服务,他能够直接映射到一个物理服务(host 指向 ip + port),也能够指向一个 upstream 来作到负载均衡;
route: 是路由的抽象,他负责将实际的 request 映射到 service。
默认状况下,KONG监听的端口为:
8000: 此端口是KONG用来监听来自客户端传入的HTTP请求,并将此请求转发到上有服务器;
8443: 此端口是KONG用来监听来自客户端传入的HTTP请求的。它跟8000端口的功能相似,可是它只是用来监听HTTP请求的,没有转发功能。能够经过修改配置文件来禁止它;
8001: Admin API,经过此端口,管理者能够对KONG的监听服务进行配置;
8444: 经过此端口,管理者能够对HTTP请求进行监控.sql

Kong安装mongodb

这里以0.13.x 以上的版本为例子,废弃了API实体对象的使用。
建立docker网络docker

docker network create kong-net

安装数据库,kong支持 postgres( postgres9.5以上)和Apache Cassandra
建立启动数据库,这里以postgres9.5做为数据库来存储数据,以下:数据库

$ docker run -d --name kong-database \
--network=kong-net \
-p 5432:5432 \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
postgres:9.6

数据库准备,初始化Kong数据

docker run --rm \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
kong:0.14.1 kong migrations up

启动kong

docker run -d --name kong \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
-e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
-e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
-e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \
-p 8000:8000 \
-p 8443:8443 \
-p 8001:8001 \
-p 8444:8444 \
kong:0.14.1

查看kong是否正在运行

$ curl -i http://localhost:8001

如出现如下则表示没问题:

docker容器搭建kong-dashboard或konga

经过Restful Admin API 管理kong,参考地址:https://docs.konghq.com/0.14.x/admin-api/

启动Kong Dashboard 或者 konga

官方推出了dashboard来管理Kong,界面清爽,使用方便,咱们接着往下看。
建立并运行Kong dashboard容器

docker run -d \
--network=kong-net \
--link kong:kong -p 8008:8080 pgbi/kong-dashboard start \
--kong-url http://kong:8001 \
--basic-auth kong=kong

而后访问 http://IP:8008

登陆帐号:kong 密码:kong,以下图:

docker容器搭建kong-dashboard或konga

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,这样能够减小数据库的部署。

启动一个容器准备Konga的数据库

docker run --rm  --network=kong-net  pantsel/konga -c prepare -a postgres -u postgresql://kong@kong-database:5432/konga_db

当迁移运行了,咱们能够启动 Konga

docker run -p 1337:1337 \
             --network=kong-net \
             -e "DB_ADAPTER=postgres" \
             -e "DB_HOST=kong-database" \
             -e "DB_USER=kong" \
             -e "DB_DATABASE=konga_db" \
             -e "KONGA_HOOK_TIMEOUT=120000" \
             -e "NODE_ENV=production" \
             --name konga \
             pantsel/konga
After a while, Konga will be available at:

访问 http://IP:1337

启动postgre admin 4

建立并运行postgre admin 4容器

docker run -d -p 8009:80 \
--network=kong-net \
--link kong-database:kong-database \
-e "PGADMIN_DEFAULT_EMAIL=admin@admin.com" \
-e "PGADMIN_DEFAULT_PASSWORD=admin@admin.com" \
-d dpage/pgadmin4

而后访问 http://IP:8009

登陆帐号:admin@admin.com,密码:admin@admin.com
建立server,起个名字Host=XXX port:5432 用户名密码为kong


参考文档
1.kong官方文档:https://getkong.org/docs/
2.docker安装kong:http://www.javashuo.com/article/p-ravrisjj-kr.html
3.选择Kong做为你的API网关:https://www.itcodemonkey.com/article/5980.html

相关文章
相关标签/搜索