Ubuntu下kong postgresql konga安装配置使用


以下安装环境版本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作为镜像。

三、测试:

在这里插入图片描述

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 

在这里插入图片描述
数据库准备

按照上述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

在这里插入图片描述
测试kong是否启动

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

在这里插入图片描述

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了
在这里插入图片描述

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;
  }
}

在这里插入图片描述
1个upstream可以负载均衡多个target
1个service可以匹配多个route

konga的基本使用配置

1.创建用户

在这里插入图片描述

2.分布式管理kong

在这里插入图片描述

3.快照信息

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

konga配置服务

1.创建一个upstream

在这里插入图片描述

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

在这里插入图片描述

3.创建一个服务(service)

只需要填写url会自动解析协议ip端口和路径
在这里插入图片描述

4.创建一个路由

在这里插入图片描述

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

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

* 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浏览器不能访问服务
在这里插入图片描述
在这里插入图片描述
自定义配置示例
在这里插入图片描述
使用postman中将请求的User-Agent设为kong-botdetection发送请求可以看到返回Fobidden消息
在这里插入图片描述

* 请求体限制request size limiting

对请求的payload size进行设定。设定是以M为单位的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

使用konga配置lua脚本
在这里插入图片描述
在这里插入图片描述
这里我选择的是请求之前处理逻辑如果请求头没有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')

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值