Kong基础搭建教程
在微服务的搭建过程中我们往往需要将多个服务进行聚合从而提供对外服务,经过实际的调研最终选定Kong作为最终的网关。
一、Kong环境搭建
1. 下载镜像
下载数据库镜像
docker pull postgres:9.6
下载kong镜像
docker pull kong:2.0
2. 创建网络
为了保证互相可以正常访问,这里单独创建一个网络。
docker network create kong-net
3. 创建数据库
为了保证数据能够得到保存,我们这里利用pg创建一个数据库。
docker run -d --name kong-database --network=kong-net -p 5432:5432 -e "POSTGRES_USER=kong" -e "POSTGRES_DB=kong" postgres:9.6
4. 初始化数据库
为了保证后续kong能够正确使用数据库,这里我们必须提前进行数据库的初始化操作。
docker run --rm --network=kong-net -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-database" -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" kong:2.0 kong migrations bootstrap
如果顺利运行则最终会输出Database is up-to-date
表示数据库完成初始化操作。
5. 启动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:2.0
通过以上配置我们可以得知,我们把管理端口调整到了8001
和8444
端口,而对应对外负责处理请求的端口则是8000
和8443
(SSL)。如果成功启动则我们通过本地浏览器访问8001
端口将会看到对应输出内容。
二、 Konga环境搭建
1. 下载镜像
docker pull pantsel/konga:0.14.7
2. 初始化数据库
这里为了符合实际,这里将采用上述教程中已经创建的pg数据库,首先我们需要进入容器进行数据库创建。
docker exec -it kong-database psql -U kong
进入后输入以下语句创建数据库。
CREATE DATABASE "konga" WITH ENCODING='UTF8';
完成创建后通过q
退出控制台,借助我们使用konga
对数据库进行初始化操作。
docker run --rm --network=kong-net pantsel/konga:0.14.7 -c prepare -a postgres -u postgresql://kong@kong-database/konga
如果没有任何错误就完成了konga
的数据库初始化工作,我们接着往下开始部署konga
看板。
3. 启动konga
下面我们直接启动对应的看板UI。
docker run -d -p 1337:1337 --network=kong-net -e "TOKEN_SECRET=123456" -e "DB_ADAPTER=postgres" -e "DB_HOST=kong-database" -e "DB_USER=kong" -e "DB_DATABASE=konga" -e "NODE_ENV=production" --name konga pantsel/konga:0.14.7
完成后我们通过访问localhost:1337
即可看到注册页面,此时我们需要注册一个管理员账户就可以对kong
进行管理了。
4. 利用Konga创建服务
完成账户注册后用户使用注册的账户进入管理界面就可以对Kong进行控制了,首先我们选择SERVICES
菜单进入到服务列表中,通过按钮ADD NEW SERVICE
将会弹出新建服务的窗口我们按照如下进行对应参数的填写即可。
Name
:填写服务的名称(如 kong-api)Protocol
:服务的协议(如 http)Host
: 上游服务器地址(如 本机IP)Port
:上游服务端口(如 8001)Path
:上游服务路径(如 /)
其他参数如Retries
、Connect timeout
、Write timeout
和Read timeout
主要是设定请求的充实次数和超时间等。
完成以上服务后我们还需要进行路由设定,指定对应的域名请求路由到该服务上。我们通过点击刚创建的服务可以看到左侧出现四个菜单,分别是Service details
、Routes
、Plugins
和Eligible Consumers
,这里我们选择Routes
选项进入到路由列表,通过点击ADD ROUTE
按钮将会弹出路由新建窗口,这里我们需要按照如下顺序填入对应的参数即可。
Name
:路由名称(如 kong-api)Hosts
:域名地址(如 www.kong.com)Paths
:二级路径(如 /)Methods
:请求方式(如 GET)
其他参数默认即可,其中需要注意Hosts
、Paths
和Methods
可以填写多个值,所以需要录入完成后回车进行确认,否则点击创建将会提示参数未填写。
完成以上的操作后我们通过本地的Hosts文件将域名www.kong.com
解析到本地然后通过访问http://www.kong.com:8000
即可看到Kong
的Admin Api输出的内容,这样我们就完成了一个API的创建,当然还可以通过丰富的插件使Kong
更符合我们的应用。
三、 监控Kong
1. 环境准备
这里需要使用到Prometheus
和Grafana
,为了避免版本导致的区别这里提供了对应百度云的下载地址,大家可以自行进行下载。
Prometheus对应提取码为2b1r
Grafana对应提取码为mjym
完成以上下载后需要解压到对应文件夹下即可。
2. 启用插件
为了能够采集数据,这里我们需要通过Plugins
开启Prometheus
插件,成功开启后通过localhost:8001/metrics
就可以看看到指标了。
接着我们需要针对Prometheus
进行配置,打开prometheus.yml
文件,新增如下内容。
- job_name: 'kong'
scrape_interval: 5s
static_configs:
- targets: ['localhost:8001']
完成后开启prometheus.exe
就可以完成数据采集了。
3. 可视化
此时我们打开Grafana
文件夹,通过其中的bin
目录下的grafana-server.exe
启动服务,然后访问localhost:3000
利用初始账户密码进行登录(admin/admin)。
进入后添加Prometheus
数据源。由于AppMetrics已经提供了对应的看板所以我们可以通过ID7424
直接导入,并选择正确的数据源就可以看到最终的效果了。