kong 和konga网关部署及使用

Kong是一款基于OpenResty(Nginx + Lua模块)编写的高可用、易扩展的,由Mashape公司开源的API Gateway项目。Kong是基于NGINX和Apache Cassandra或PostgreSQL构建的,能提供易于使用的RESTful API来操作和配置API管理系统,所以它可以水平扩展多个Kong服务器,通过前置的负载均衡配置把请求均匀地分发到各个Server,来应对大批量的网络请求。

Kong主要有三个组件:
Kong Server :基于nginx的服务器,用来接收API请求。
Apache Cassandra/PostgreSQL :用来存储操作数据。
Kong dashboard:官方推荐UI管理工具,当然,也可以使用 restfull 方式 管理admin api。
Kong采用插件机制进行功能定制,插件集(可以是0或N个)在API请求响应循环的生命周期中被执行。插件使用Lua编写,目前已有几个基础功能:HTTP基本认证、密钥认证、CORS(Cross-Origin Resource Sharing,跨域资源共享)、TCP、UDP、文件日志、API请求限流、请求转发以及Nginx监控。

1.docker 安装kong

docker pull kong:3.0

2.docker 下载postgres

docker network create kong-net    ##创建网络
docker pull postgres:9.6

注意:postgres的版本最好是9.6.x以下的。

3.启动postgres

docker run --privileged=true --name kong-database -e "POSTGRES_USER=kong" -e POSTGRES_PASSWORD=kong  --network=kong-net -p 5432:5432 -v /my/local/path:/var/lib/postgresql/data -d postgres:9.6

然后使用docker ps查看是否启动成功
4.启动Kong
4.1 准备数据库

docker run --rm --network=kong-net  -e "KONG_LOG_LEVEL=debug" -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-database"  -e "KONG_PG_PASSWORD=kong" -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database"  kong:3.0 kong migrations bootstrap

4.2 启动kong

docker run -d --name kong --network=kong-net   -e "KONG_DATABASE=postgres"    -e "KONG_PG_HOST=kong-database"     -e "KONG_PG_PORT=5432" -e "KONG_PG_PASSWORD=kong"    -e "KONG_PG_DATABASE=kong"     -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"  -e "KONG_ADMIN_LISTEN_SSL=0.0.0.0:8444"  -p 8000:8000   -p 8443:8443    -p 8001:8001     -p 8444:8444     kong:3.0
 
8000:对应的http请求代理端口
8001:  http接口的管理端口
8443:  对应的https请求的代理端口
8444:  https接口的管理端口

然后根据docker ps命令查看kong是否启动成功。

5.验证是否成功启动

 curl -i http://localhost:8001

6.安装Konga可视化

docker pull pantsel/konga
 
docker run  -d -p 1337:1337 \
        --network kong-net \
        --name konga \
        -e "DB_ADAPTER=postgres" \
        -e "DB_URI=postgresql://kong:kong@kong-database/kong" \
        pantsel/konga

konga默认端口是1337,这里也需要对外暴露
启动成功之后,输入http://ip:1337/register,检查konga是否安装成功
kong 和konga网关部署及使用_第1张图片

首先注册一个账号。

  1. Kong应用
    7.1创建连接点
    kong 和konga网关部署及使用_第2张图片

kong 和konga网关部署及使用_第3张图片
默认的端口是8001当然可以在启动kong的时候自己创建映射端口。

7.2 创建Upstreams
输入name,然后提交
点击刚添加的upstream点击DETAILS添加targets,然后点击ADD TARGET输入target(ip+port)后点击SUBMIT TARGET即可,ip为本地电脑ip保证kong容器内可访问,端口为本地服务端口,这个地方可以理解为你的springboot服务的ip+端口

kong 和konga网关部署及使用_第4张图片

kong 和konga网关部署及使用_第5张图片
kong 和konga网关部署及使用_第6张图片
kong 和konga网关部署及使用_第7张图片
kong 和konga网关部署及使用_第8张图片
7.3 配置对应的services和routes
kong 和konga网关部署及使用_第9张图片
kong 和konga网关部署及使用_第10张图片
输入name、host(可以与前面Upstreams的name保持一致)
protocol(协议类型,这里是http)
port这里是8000,kong启动之后,http的代理端口是8000

service保存后,点击service name进入详情页面,然后点击Routes添加路由规则
点击ADD ROUTE输入name、paths(输入转发规则需按回车才生效),Strip Path(是否把匹配成功的paths删除后在转发后端服务器.),Preserve Host(转发后端是否带host参数,默认不带,Protocols 只保留http即可,最后点击SUBMIT ROUTE
kong 和konga网关部署及使用_第11张图片
kong 和konga网关部署及使用_第12张图片
kong 和konga网关部署及使用_第13张图片
kong 和konga网关部署及使用_第14张图片

8.测试网关是否可用
配置网关前
kong 和konga网关部署及使用_第15张图片

配置网关后
kong 和konga网关部署及使用_第16张图片
9.命令行创建upstream、target、service、route
9.1配置 upstream

curl -X POST http://localhost:8001/upstreams --data "name=helloUpstream"

9.2 配置 target

curl -X POST http://localhost:8001/upstreams/helloUpstream/targets --data "target=后端微服务ip:端口" --data "weight=100"

9.3 配置service

curl -X POST http://localhost:8001/services --data "name=hello" --data "host=helloUpstream" --data "port=8000" --data "protocol=http"

9.4 配置route

以service id作为标识
curl -X POST http://localhost:8001/routes --data "paths[]=/hello" --data "service.id=3650cc19-f314-4b87-a7e4-b07c63ad434e"
也可以后面加参数命名
curl -X POST http://localhost:8001/routes --data "paths[]=/hello" --data "service.id=3650cc19-f314-4b87-a7e4-b07c63ad434e" --data "name=dsds"

你可能感兴趣的:(kong,gateway,java)