Kong与KongA的部署
对于中间件的部署,我建议在docker run的指令里指定【--ip】,避免每次启动的时候IP不一致,因此在应用配置需要指定。
安装postgres数据库
docker run -d --name kong-database --network=overlay -p 5432:5432 -e "POSTGRES_USER=kong" -e "POSTGRES_PASSWORD=kong" -e "POSTGRES_DB=kong" postgres:9.6
初始化kong数据库
docker run --rm -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=192.168.88.144" -e "KONG_PG_USER=kong" -e "KONG_PG_PASSWORD=kong" -e "KONG_CASSANDRA_CONTACT_POINTS=postgres" kong:2.2 kong migrations bootstrap
启动kong应用
docker run -d --ip=10.0.1.111 --name kong --network=overlay -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=192.168.88.144" -e "KONG_PG_USER=kong" -e "KONG_PG_PASSWORD=kong" -e "KONG_CASSANDRA_CONTACT_POINTS=postgres" -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.2
请求看看kong是否部署成功
curl -i http://192.168.88.144:8001/services
安装konga
docker run -d --ip=10.0.1.112 -p 1337:1337 --network=overlay --restart=always -e "TOKEN_SECRET=chengong1218" -e "DB_ADAPTER=postgres" -e "DB_HOST=192.168.88.144" -e "DB_USER=kong" -e "DB_PASSWORD=kong" -e "DB_DATABASE=kong" -e "NODE_ENV=development" --name konga pantsel/konga:0.14.9
KongA的使用
初始化配置与仪表盘
Kong的一些基本概念
Service。顾名思义,就是我们自己定义的上游服务,通过Kong匹配到相应的请求要转发的地方, Service 可以与下面的Route进行关联,一个Service可以有很多Route,匹配到的Route就会转发到Service中。Service服务,通过Kong匹配到相应的请求要转发的地方(eg: 理解nginx 配置文件中server),等同于下面nginx的配置:
http { server { listen 80; location / { proxy_pass http://msg.upstream; } } }
Route。实体定义匹配客户端请求的规则. 每个路由都与一个服务相关联,而服务可能有多个与之相关联的路由. 每一个匹配给定路线的请求都将被提交给它的相关服务。Route 路由相当于nginx 配置中的location
http { server { listen 80; server_name api.service.com; location /test{ proxy_pass https://msg.upstream; } } }
Upstream。用来配置转发真实地址的集合,类似于Nginx的Upstream模块。
upstream upstream.api { server www.jd.com:443 weight=100; server www.baidu.com443 weight=100; }
添加Service
把圈起来的4项填写好,在实际场景可以根据自己的技术情况填写Protocol=http,Port=80,下面我将有taobao.com和baidu.com所以暂时用https和443.
添加Route
把Route模块的Name、Path和Methods填写好,在这里需要注意的是Path和Methods每填写一项得回车一次,不然保存后是没有效果的。
添加Upstream、
Kong的Upstream设置要添加Target,注意Upstream Detail的Name需要与Service Detail配置的Host一致。
效果图