Ubuntu下kong postgresql konga安装配置使用

kong postgresql konga安装配置使用

  • postgresql安装配置
  • docker部署postgres(9.6)
    • 一、安装:
    • 二、启动:
    • 三、测试:
  • kong安装配置
      • 1.安装之前先保证如下软件安装
      • 2.安装kong
      • 3.配置kong连接数据库postgres
      • 4.kong停止和启动服务
  • konga安装配置
      • 1.更新ubuntu的apt源索引:
      • 2.创建docker网络连接
      • 3.docker方式安装
      • 4.初始化postgresql数据
      • 5.启动konga
      • 6.负载均衡测试服务代理
  • konga的基本使用配置
      • 1.创建用户
      • 2.分布式管理kong
      • 3.快照信息
  • konga配置服务
      • 1.创建一个upstream
      • 2.指定一个target(代理服务)
      • 3.创建一个服务(service)
      • 4.创建一个路由
  • * 添加服务限流rate-limiting插件
  • * 添加ip黑白名单ip-restriction插件
  • * konga bot-detection插件使用
  • * 请求体限制request size limiting
  • * 配置lua脚本拦截请求处理(Pre)

以下安装环境版本postgresql9.5,kong2.0.4,konga0.14.7(建议使用)

postgresql安装配置

docker部署postgres(9.6)

一、安装:

docker pull postgres:9.6

二、启动:

docker run -d --name postgres  \
-p 5432:5432 \
-e "POSTGRES_USER=kong_user" \
-e "POSTGRES_DB=kong_db" \
-e "POSTGRES_PASSWORD=123456" \
postgres:9.6

–name,指定创建的容器的名字;

-e POSTGRES_PASSWORD=password,设置环境变量,指定数据库的登录口令为password;

-p 5432:5432,端口映射将容器的5432端口映射到外部机器的5432端口;

-d postgres:9.6,指定使用postgres:9.6作为镜像。

三、测试:

Ubuntu下kong postgresql konga安装配置使用_第1张图片

kong安装配置

kong安装官方网址

1.安装之前先保证如下软件安装

sudo apt-get install netcat openssl libpcre3 dnsmasq procps

2.安装kong

可以在官方网址下载最新的kong的deb安装包我使用的是当前最新版本,然后执行命令

sudo dpkg -i  kong-2.0.4.xenial.amd64.deb

3.配置kong连接数据库postgres

因为kong的配置相对简单,我这里只是简单的配置了数据库.

sudo vim /etc/kong/kong.conf 

Ubuntu下kong postgresql konga安装配置使用_第2张图片
数据库准备

按照上述postgresql安装,已经准备好存储,现在需要执行kong migrations来初始化数据库表

kong migrations bootstrap  ##高版本使用

这里我没有指定配置文件,使用的都是kong默认的配置,也可以指定自定义配置文件
#kong.conf的路径,默认是/etc/kong/kong.conf

kong migrations bootstrap [-c /path/to/kong.conf] ## kong配置文件地址

4.kong停止和启动服务

sudo  kong stop
sudo  kong start

Ubuntu下kong postgresql konga安装配置使用_第3张图片
测试kong是否启动

curl -i -X GET  --url http://192.168.0.198:8001

Ubuntu下kong postgresql konga安装配置使用_第4张图片

konga安装配置

1.更新ubuntu的apt源索引:

sudo apt-get update

2.创建docker网络连接

docker network create kong-net

3.docker方式安装

拉取konga最新的镜像

docker pull pantsel/konga:latest

4.初始化postgresql数据

docker run --rm pantsel/konga:latest -c prepare -a postgres -u postgresql://kong_user:123456@ip:5432/kong_db

命令行中的kong_user是postgres创建的用户和密码123456可以替换为你自己的
ip是postgres数据库的ip地址5432端口kong_db是上面创建的数据库
以上解释都可以自行定义

5.启动konga

docker run -p 1337:1337 \
--network kong-net \
--name konga \
-e "NODE_ENV=production" \
-e "DB_ADAPTER=postgres" \
-e "DB_URI=postgresql://kong_user:123456@ip:5432/kong_db" \
pantsel/konga

最后访问ip:1337就可以访问kong的管理UI了
Ubuntu下kong postgresql konga安装配置使用_第5张图片

6.负载均衡测试服务代理

使用命令创建服务和测试服务代理

curl -X POST http://ip:8001/upstreams --data "name=blog"

创建一个上游服务名字为blog相当于nginx.conf中的

upstream blog{
     
 
}
curl -X POST http://ip:8001/upstreams/blog/targets --data "target=ip:8001" --data "weight=100"

创建一个目标代理权重为100相当于nginx.conf中的一个上游服务中可以创建多个代理
执行完上面的命令

upstream blog{
     
    server ip:8001 weight=100;
    server ip:8003 weight=50;
}
curl -X POST http://192.168.0.198:8001/services --data "name=helloblog" --data "host=blog"

创建一个服务执行完之后会生成一个服务id

server {
     
listen 80;
	proxy_pass http://blog;
}
curl -X POST http://ip:8001/routes --data "paths[]=/helloblog" --data "service.id=65689b01-09e4-45e0-891b-da6fa3dfc192"

路由绑定服务
server {
listen 80;
location /helloblog{
proxy_pass http://blog;
}
}

upstream blog{
     
    server 192.168.0.198:8001 weight=100;
}

server {
     
    listen 80;
    location /helloblog{
     
    proxy_pass http://blog;
  }
}

Ubuntu下kong postgresql konga安装配置使用_第6张图片
1个upstream可以负载均衡多个target
1个service可以匹配多个route

konga的基本使用配置

1.创建用户

Ubuntu下kong postgresql konga安装配置使用_第7张图片

2.分布式管理kong

Ubuntu下kong postgresql konga安装配置使用_第8张图片

3.快照信息

Ubuntu下kong postgresql konga安装配置使用_第9张图片
Ubuntu下kong postgresql konga安装配置使用_第10张图片
Ubuntu下kong postgresql konga安装配置使用_第11张图片

konga配置服务

1.创建一个upstream

Ubuntu下kong postgresql konga安装配置使用_第12张图片

2.指定一个target(代理服务)

Ubuntu下kong postgresql konga安装配置使用_第13张图片

3.创建一个服务(service)

只需要填写url会自动解析协议ip端口和路径
Ubuntu下kong postgresql konga安装配置使用_第14张图片

4.创建一个路由

Ubuntu下kong postgresql konga安装配置使用_第15张图片

* 添加服务限流rate-limiting插件

可配置项:
year:年
month: 月
day: 天
minute:分钟,这里我们配置3,表示每分钟不能超过3次调用。
Second: 秒
计算频率的维度:月/天/分钟/秒, 假如同时配置多个维度,会同时生效。
根据年、月、日、时、分、秒设置限流规则,多个限制同时生效。
比如:每天不能超过10次调用,每分不能超过3次。
当一分钟内,访问超过3次,第四次就会报错。
当一天内,访问次数超过10次,第十一次就会报错。

Ubuntu下kong postgresql konga安装配置使用_第16张图片
Ubuntu下kong postgresql konga安装配置使用_第17张图片
Ubuntu下kong postgresql konga安装配置使用_第18张图片

* 添加ip黑白名单ip-restriction插件

** 规则:
IP黑白名单,支持单个,多个,范围分段IP(满足CIDR notation规则)。多个IP之间用逗号,分隔。
CIDR notation规范如下:
10.10.10.0/24 表示10.10.10.*的都不能访问。
1.设置黑名单IP
在这里,我将我自己的IP设置成黑名单 **

Ubuntu下kong postgresql konga安装配置使用_第19张图片
Ubuntu下kong postgresql konga安装配置使用_第20张图片
Ubuntu下kong postgresql konga安装配置使用_第21张图片

* konga bot-detection插件使用

对service或route创建 bot-detection可以根据User-agent对请求分类到黑名单或白名单
下面是三个浏览器的User-Agent
IE浏览器: User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362
火狐: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0
Chrome: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
配置
注意:开发人员可以自定义黑白名单的配置同样也支持User-Agent配置只要请求的时候带上头文件就可以进行拦截请求

.*Edge.*       # 配置iE浏览器不能访问 黑名单配置
.*Firefox.*    # 配置火狐浏览器不能访问
.*Safari.*     # 配置谷歌浏览器不能访问

下面配置IE浏览器不能访问服务
Ubuntu下kong postgresql konga安装配置使用_第22张图片
Ubuntu下kong postgresql konga安装配置使用_第23张图片
自定义配置示例
Ubuntu下kong postgresql konga安装配置使用_第24张图片
使用postman中将请求的User-Agent设为kong-botdetection发送请求可以看到返回Fobidden消息
Ubuntu下kong postgresql konga安装配置使用_第25张图片

* 请求体限制request size limiting

对请求的payload size进行设定。设定是以M为单位的
Ubuntu下kong postgresql konga安装配置使用_第26张图片
Ubuntu下kong postgresql konga安装配置使用_第27张图片
Ubuntu下kong postgresql konga安装配置使用_第28张图片

* 配置lua脚本拦截请求处理(Pre)

使用konga配置lua脚本
Ubuntu下kong postgresql konga安装配置使用_第29张图片
Ubuntu下kong postgresql konga安装配置使用_第30张图片
这里我选择的是请求之前处理逻辑如果请求头没有x-custom-auth相应401

   -- Get list of request headers
   local custom_auth = kong.request.get_header("x-custom-auth")

   -- Terminate request early if our custom authentication header
   -- does not exist
   if not custom_auth then
     return kong.response.exit(401, "Invalid Credentials")
   end

   -- Remove custom authentication header from request
   kong.service.request.clear_header('x-custom-auth')

Ubuntu下kong postgresql konga安装配置使用_第31张图片
Ubuntu下kong postgresql konga安装配置使用_第32张图片

你可能感兴趣的:(Ubuntu下kong postgresql konga安装配置使用)