什么是网关
简单点说网关是一个Api服务器,是系统的唯一入口。为每个客户端提供一个定制的Restful API。同时它还需要具有一些业务之外的责任:鉴权。静态响应等处理。
为什么需要gateway
我们知道我们要进入一个服务本身,并不是一件容易的事情。服务本身有自己的通讯协议,这种协议往往不能很好的兼容各个客户端的需求,所以我们只能寻找一种公共协议:http。所以网关的概念就诞生了。如图:
gateway的作用
所以网关的最主要在作用就是路由的转发 。但是 在我们平时的使用过程中,直接请求http 协议的 api 会存在很多问题。例如:安全问题,流量问题 等等。所以gateway 还需要做一些额外的 事情来保证我们的流程是安全的、可靠的。
使用网关
现在已经出现了很多网关的产品:比如 Ocelot ,zuul ,Spring Cloud Gateway,kong 等等
今天我们要 介绍的网关就是 kong
kong 在docker中的部署
创建一个kong的网络
docker network create kong-net
创建数据库 pgsql
docker run -d --name kong-database --network=kong-net -p 5432:5432 -e "POSTGRES_USER=kong" -e "POSTGRES_DB=kong" -e "POSTGRES_PASSWORD=qwe123QWE" postgres:9.6
数据迁移
docker run --rm \ --network=kong-net \ -e "KONG_DATABASE=postgres" \ -e "KONG_PG_HOST=kong-database" \ -e "KONG_PG_PASSWORD=qwe123QWE" \ -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \ kong:latest kong migrations bootstrap
启动kong
docker run -d --name kong \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_PASSWORD=qwe123QWE" \
-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
浏览器输入:http:kongip:8001,会出现json字符,表示成功
安装konga
数据迁移
docker run --network=kong-net --rm pantsel/konga:latest -c prepare -a postgres -u postgresql://kong:qwe123QWE@kong-database:5432/konga
启动konga
docker run
-p 1337:1337 \
--network kong-net \
--name konga \
-e "NODE_ENV=production" \
-e "DB_ADAPTER=postgres" \
-e "DB_URI=postgresql://kong:qwe123QWE@kong-database:5432/konga" \
pantsel/konga
创建链接的Admin URL地址可以使用kong创建的网络。例如:http://kong:8001
如图:
然后可以自行编辑自己的 serevices 与service对应的route 访问:http:kongip:8000/路由 就可以访问你的 api啦
最后安利一波
ketchup 是一个微服务框架 它集成了网关kong,通过简单的配置,可以自行注册到kong的网关中,大大减少了开发的时间。
源码地址:https://github.com/simple-gr/ketchup
操作文档 请见:https://github.com/simple-gr/ketchup/wiki/%E7%BD%91%E5%85%B3。
qq 交流群:592407137