开发环境搭建
# 前言
项目中前端访问后端的数据流为 前端发起http请求 => 后端应用层 => kong网关 => 后端服务层
, 为了保证后端应用层到服务层之间的数据安全性, 我们增加了 aksk
验签操作, 只有验签通过的请求才会进行处理, 但是之前的aksk
是写在后端服务层
代码里的, 如果有一些非法请求进行访问, 会造成一端无效的请求命中后端服务, 会对系统的性能造成一定的影响, 所以决定使用kong
网关的插件功能, 在kong
中进行验签操作
# kong插件介绍
# 现有的数据访问流程
# 使用kong插件后的流程
# 本地搭建架构图
docker部署特别方便, 本次环境搭建除了
kong
网关其他的均使用docker方式搭建
# 定义网络
docker network create kong-net
# consul
docker run --name consul --network=kong-net -d -p 8500:8500 -p 8600:8600/udp -h node-dev consul
访问地址验证http://127.0.0.1:8500
# postgres 数据库
docker run -d --name kong-database \
--network=kong-net \
-p 5432:5432 \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
-e "POSTGRES_PASSWORD=kong" \
postgres:9.6
2
3
4
5
6
7
这里注意postgres版本号为9.6,高版本不支持konga(konga部署2种方式,依赖数据库,另外一种不依赖数据库。依赖数据库的方式:postgres版本号为9.6可以与之兼容)
# 安装kong
# 安装
brew install kong
# 配置文件
下载 kong.conf.default (opens new window) 并将文件移动到 /etc/kong/kong.conf
注意:这个kong.conf配置文件的信息需要修改,其中包括配置postgres数据库的地址账号密码等信息
database = postgres # Determines which of PostgreSQL or Cassandra
# this node will use as its datastore.
# Accepted values are `postgres`,
# `cassandra`, and `off`.
pg_host = 127.0.0.1 # pg数据库在docker中,所以填写本机地址
pg_port = 5432 # pg数据库端口号
pg_timeout = 5000 # Defines the timeout (in ms), for connecting,
# reading and writing.
pg_user = kong # Postgres user.
pg_password = kong
pg_database = kong # The database name to connect to.
dns_resolver = 127.0.0.1:8600 # 配置consul
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 初始化kong数据库
kong migrations up -c /etc/kong/kong.conf
# 启动
kong start -c /etc/kong/kong.conf
验证
浏览器访问127.0.0.1:8001,返回Json数据,说明Kong网关已经启动成功。
如果访问不通则尝试使用
localhost:8001
, 如果使用localhost可以访问, 则将配置文件中的admin_listen
的值 从localhost
修改 为127.0.0.1
,修改配置文件重新启动生效
# 安装konga
docker run -p 1337:1337 --name konga -e "NODE_ENV=production" pantsel/konga
浏览器访问 http://127.0.0.1:1337 (opens new window)
# konga添加kong链接注意事项
Konga 是部署在docker中的, 而kong部署在宿主机上, 两者之间网络是隔离的, docker容器访问宿主机需使用docker.for.mac.host.internal
代替localhost