一、 前言
Kong Gateway 是一个开源的轻量级 API 网关,也是目前市场上最流行的 API 网关之一。位于您的上游服务之前,您可能运行API 服务骑,但需在请求到达您的服务器时管理流量、API 网关身份验证或日志记录。kong 网关及其所有插件就能实现上述的需求。
二、kong安装
下载连接: kong 资源下载 根据自己的操作系统下载。
kong可以在有数据库和没有数据库两种情况下运行。推荐运行有数据库版本的,在后续的配置中可添加 oauth2等认证操作。
Kong 支持PostgreSQL 9.5+和Cassandra 3.xx作为其数据存储。
2.1 安装 PostgreSQL 数据库
$ sudo yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
$ sudo yum install postgresql96
$ sudo yum install postgresql96-server
初始化数据库并启动数据库服务
sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
sudo systemctl enable postgresql-9.6
sudo systemctl start postgresql-9.6
登录数据库 并创建 kong用户名密码等信息
sudo -i -u postgres
$ psql
psql> CREATE USER kong; CREATE DATABASE kong OWNER kong; ALTER USER kong WITH password 'kong';
psql> \q
$ exit
重启数据库
sudo systemctl restart postgresql-9.6
2.2 安装 kong
上传下载好的 rmp 文件包 ,通过
rpm -i 需要安装的包文件名
命令安装 kong
安装成功后 kong的配置文件 在 路径 /etc/kong/ 下,
编辑kong 配置文件 kong.conf
启动 kong网关
// 第一次安装的时候 需要运行
kong migrations bootstrap -c /etc/kong/kong.conf
// 后边可直接通过 kong start 启动kong
kong start -c /etc/kong/kong.conf
如果一切顺利,您应该会看到一条消息 ( Kong started),通知您 Kong 正在运行。
默认情况下,Kong 侦听以下端口:
- :8000 Kong 侦听来自客户端的传入 HTTP 请求,并将其转发到您的上游服务。
- :8443Kong 在其上侦听传入的 HTTPS 请求。此端口的行为与:8000端口相似,不同之处在于它仅需要 HTTPS 请求。可以通过配置文件禁用此端口。
- :8001用于配置 Kong的Admin API在其上侦听。
- :8444 Admin API 在其上侦听 HTTPS 流量。
重启kong 和停止kong
kong stop
kong reload
2.3 管理kong网关
通常情况下 可通过kong的 8001 端口 添加服务、路由、插件等信息。市面上也有开源的管理web版。当前比较流行的时 kongx ,spring boot 项目,开源;
linux 系统 通过 curl 添加服务和路由等:
2.3.1 添加 服务
-- 添加服务
curl -i -X POST \
--url http://localhost:8001/services/ \
--data 'name=test-service' \
--data 'url=http://localhost:8084/'
向网关添加 的服务名为 test-service 并指向本地的 8084端口运行的 服务。 注意 8084 端口运行的服务即是要后续访问的api接口,在配置服务前需确保 调用 8084(你的服务运行的端口)的某个接口 能正常返回数据。localhost也可以是 一个固定的IP地址。
2.3.2 添加路由
curl -i -X POST \
--url http://localhost:8001/services/test-service/routes \
--data 'hosts[]=test.com'
路由时请求服务的入口,该路由属于 上一步添加 的 test-service 服务
2.3.3 本机访问
curl -i -X POST \
--url http://localhost:8000/api/sys/list \
--header 'Host: test.com'
访问本机的 localhost:8000 既是访问kong网关,Host 为添加路由时 配置的 值。kong网关通过 host 将请求转发到 该路由所指向的服务及 http://localhost:8084/api/sys/list
此时只能本机访问。
2.3.4 消费者、插件,启用匿名访问
创建消费者
$ curl -i -X POST \
--url http://localhost:8001/consumers/ \
--data "username=test"
返回结果:
HTTP/1.1 201 Created
Content-Type: application/json
Connection: keep-alive
{
"username": "Jason",
"created_at": 1428555626000,
"id": "bbdf1c48-19dc-4ab7-cae0-ff4f59d87dc9"
}
这里的id 为该用户的id 后续 会使用到
创建插件
curl -i -X POST \
--url http://localhost:8001/services/ruoyi-service/plugins/ \
--data 'name=key-auth'
启用匿名访问:
curl -i -X PATCH \
--url http://localhost:8001/plugins/5975bff3-2ee7-45fd-a50b-66a70390131c \
--data "config.anonymous=5e719829-54f1-451b-b7ef-6b9934f35fe6"
5975bff3-2ee7-45fd-a50b-66a70390131c 为创建插件时 返回的id,
5e719829-54f1-451b-b7ef-6b9934f35fe6 为创建用户时 返回的id。
现在可以通过 postman 远程访问 了。
2.4 kongx web 管理端使用
kongx 下载地址: kongx
环境管理页面配置 kong的 Admin url 路径。
Gateway 菜单 用户管理 kong的 服务、路由、证书等信息。