一、 前言

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的 服务、路由、证书等信息。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐