1 docker方式启动项目
1.1下载docker-compose
curl -L https://github.com/docker/compose/releases/download/1.25.1-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
1.2修改docker-compose.yml
version: '3'
services:
kong-database:
image: postgres:9.6
restart: always #每次总是启动
networks:
- kong-net
environment:
POSTGRES_USER: kong
POSTGRES_DB: kong
POSTGRES_PASSWORD: kong
ports:
- "5432:5432"
#######################
# 执行数据库迁移
######################
kong-migration:
image: kong:latest
command: "kong migrations bootstrap"
networks:
- kong-net
restart: on-failure
environment:
- KONG_DATABASE=postgres
- KONG_PG_DATABASE=kong
- KONG_PG_PASSWORD=kong
- KONG_PG_HOST=kong-database
links:
- kong-database #连接的是kong-database服务的
depends_on:
- kong-database #依赖于kong-database服务
#####################
# kong gateway
#####################
kong:
image: kong:latest
restart: always
networks:
- kong-net
environment:
KONG_DATABASE: postgres
KONG_PG_HOST: kong-database
KONG_PG_PASSWORD: kong
KONG_PROXY_LISTEN: 0.0.0.0:8000
KONG_PROXY_LISTEN_SSL: 0.0.0.0:8443
KONG_ADMIN_LISTEN: 0.0.0.0:8001
depends_on:
- kong-migration
links:
- kong-database
healthcheck:
test: ["CMD", "curl", "-f", "http://kong:8001"]
interval: 5s
timeout: 2s
retries: 15
ports:
- "8001:8001"
- "8000:8000"
- "8443:8443"
#######################
#以下两个是konga GUI
#######################
konga-prepare:
image: pantsel/konga:latest
command: "-c prepare -a postgres -u postgresql://kong:kong@kong-database:5432/konga" #注意是用户名:密码@数据库服务名称:端口
networks:
- kong-net
restart: on-failure
links:
- kong-database
depends_on:
- kong #依赖kong服务
- kong-database #依赖kong-database服务
konga:
image: pantsel/konga:latest
restart: always
networks:
- kong-net
environment:
DB_ADAPTER: postgres
DB_HOST: kong-database
DB_USER: kong
DB_DATABASE: konga
DB_PASSWORD: kong #必须加上密码,不然会失败
depends_on:
- kong
- kong-database
ports:
- "1337:1337"
networks:
kong-net:
driver: bridge
1.3编写快捷脚本
#使用说明,用来提示输入参数
usage() {
echo "Usage: sh 执行脚本.sh [init|start|stop|rm]"
exit 1
}
init(){
docker-compose up -d
}
start(){
docker-compose up -d kong-database kong konga
}
#关闭所有模块
stop(){
docker-compose stop
}
#删除所有模块
rm(){
docker-compose rm
}
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"init")
init
;;
"start")
start
;;
"stop")
stop
;;
"rm")
rm
;;
*)
usage
;;
esac
1.4 脚本使用
使用之前授权 chmod +x start.sh
#初始化
./start.sh init
#停止
./start.sh stop
#删除
./start.sh rm
#启动
./start.sh start
2 konga的配置和使用
进入网页 ip:1337
初次进入需要进行配置,需要注意的是Kong Admin URL需要写ip:8001
,因为docker启动的kong的端口为8001
2.1 创建service,设置路由规则
是抽象层面的服务,他可以直接映射到一个物理服务 (host 指向 ip + port),也可以指向一个 upstream 来做到负载均衡。通俗说,这个service就是后台访问接口配置。
2.1.1 创建Test Service,设置路由规则
(1)创建service
各个选项含义如下:
(2)添加route路由
把到网关的路由匹配到指定service
各个选项含义如下:
(3)之后访问,ip:8000/test ,会直接跳转到百度首页。
2.1.1 指向负载均衡
(1)新建Upstreams,
需要注意这里的Name后续会用到,用作跟service的联系。
####(2)新建Targets,输入ip:端口号
(3)将service指向的host改为Upstreams的Name
参考文章:
docker-compose安装Kong网关Konga教程
网关服务Kong和konga介绍安装使用教程
konga添加service和rouce详解
【kong系列二】之 kong的负载均衡配置