API网关——Kong实践分享

网友投稿 330 2022-11-11

API网关——Kong实践分享

概述

什么是Kong

Kong是一个在Nginx中运行的Lua应用程序,可以通过lua-nginx模块实现,Kong不是用这个模块编译Nginx,而是与OpenRestry一起发布,OpenRestry已经包含了lua-nginx-module,OpenRestry是Nginx的一组扩展功能模块。

为什么是Kong

Kong是一个Api Gateway,通过插件的形式提供负载均衡,日志记录,身份验证,速率限制,转换等功能。

Kong可以很轻松扩展功能,模块化,可以运行在任何基础设施上。

术语

Route:是请求的转发规则,按照Hostname和PATH,将请求转发给Service。

Services:是多个Upstream的集合,是Route的转发目标。

Consumer:是API的用户,里面记录用户的一些信息。

Plugin:是插件,plugin可以是全局的,绑定到Service,绑定到Router,绑定到Consumer。

Certificate:是https证书。

Sni:是域名与Certificate的绑定,指定了一个域名对应的https证书。

Upstream:是负载均衡策略。

Target:是最终处理请求的Backend服务。

特性

动态负载均衡 基于散列的负载均衡 断路器 健康检查 Websockets OAuth2.0 日志记录 安全性 Syslog 监控 转发代理 认证 速率限制 故障检测和恢复

……

更多详情参考:https://docs.konghq.com/hub/

开源/企业对比

架构

1.1版本以后支持无db模式

02执行流程

加入kong后,每个客户端对API的请求将首先到达Kong,然后被代理到最终API,在请求和响应之间,Kong将执行任何已安装的插件,扩展API功能集,Kong有效的成为每个API的入口点。

部署

Kong支持在任何基础设施上运行,支持docker、packages、vagrant、Homebrew、CloudFormation、AWS、Azure、Kubernetes等。

本次部署基于package方式,部署软件版本。

软件 版本
Kong 1.0.3
Postgresql 9.6
Kong-dashboard 3.5.0

01部署Postgresql

docker run -- name postgres - e POSTGRES_PASSWORD = 123456 - p 5432 : 5432 - d postgres : 9.6

02创建用户及数据库

登陆

psql - U postgres - h 10.20 . 1.190 - p 5432

#创建用户

create user kong with password ‘ kong ’;

#创建数据库

create database kong owner kong ;

#退出控制台

\q

03下载安装包

wget:install kong - 1.0 . 3.el7.noarch . rpm

#拷贝配置

cp / etc / kong / kong . conf . default / etc / kong / kong . conf

#配置

admin_listen = 0.0 . 0.0 : 8001 , 0.0 . 0.0 : 8444 ssl pg_host = 10.20 . 1.190 pg_port = 5432 pg_user = kong pg_password = kong pg_database = kong

保存并退出。

05启动kong

#数据库迁移,初始化表

kong migrations bootstrap

- c / etc / kong / kong . conf – vv

#启动

kong start - c / etc / kong / kong . conf

06部署kong-dashboard

dashboard目前只支持kong版本1.0.3,kong最新版本不支持,使用pgbi/kong-dashboard镜像

#启动dashboard

docker run - p 8888 : 8080 pgbi / kong - dashboard start -- kong - url http : //10.20.1.190:8001

使用

01upstream

02target

03service

04routers

05验证

06插件

1.Base-auth

创建consumer

创建Basic-auth-credential

服务开启Basic-auth

验证

未加用户信息,没权限,效果如下:

加入用户信息后,效果如下:

集成

01Dns SRV

Kong利用Dns轮询访问后端应用。

1.架构图

2.检查服务域名

使用Dns做服务发现,查看boms-user-service服务如下:

# dig @10.20.11.118 -p 8600 boms-user-service.service.dc1.consul SRV

含义解释:

调用服务域名boms-user-service.service.dc1.consul,通过dns解析找到实例ip+port,如上例中10.20.11.118:8081。

3.修改kong配置

vim 编辑kong.conf,增加:

dns_resolver : 127.0 . 0.1 : 8600

4.kong中使用

在kong中手动增加一个service,host填入服务域名,增加router,即可转发。

5.总结

需要手动在kong中创建服务,并且仅适用consul注册中心。

02Agent 轮询

1.架构图

agent负责监听注册中心,动态调用kong admin API创建upstream、target、service、router等资源。

用户通过boms平台调用admin API修改router信息,实现服务转发功能,在此数据基础之上在启用插件,丰富功能。

开发

01命令行

02Admin API

例如:

03插件开发

插件开发工具包。

参考

Kong官方文档

插件文档

dns-srv 详解

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:超融合架构助力企业IT部门更好的支持业务目标以提高利润|超融合
下一篇:springboot设置了server.port但是没有用,还是8080问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~