一 Kong安装目录结构的说明
++++++++++++++ '后续看看里面有啥' ++++++++++++++
/usr/local/bin --> 'kong'命令的路径
/etc/kong/ --> 'kong默认会寻找配置文件'
/usr/local/kong --> 'Kong的日志' -->/usr/local/kong/logs
/usr/local/lib/lua/5.1
/usr/local/lib/luarocks
/usr/local/share/lua/5.1
/usr/local/openresty -->'openresty'自带的库
Postgresql'默认'端口: '5432'
二 Kong 快速开始
说明: 通过一些'简单的案例'快速熟悉Kong相关的'concepts'
(1)动态负载均衡
① 假定在nginx.conf中
upstream wzj {
server 172.25.2.100:8010 weight=1;
server 172.25.2.100:8011 weight=2;
}
server {
# listen 80; #kong中是统一的listen(8000)
server_name kongtest.wzj.com;
location /ceshi {
proxy_pass http://wzj
}
}
思考: 如何在'Kong'中实现?
② 通过Kong Admin API进行上述配置
Kong 所有的操作都是基于'HTTP Restful API (通过methoad的语义进行区分)'进行的
备注: 同一个'API',不同的'method [eg:GET、POST、PATCH]'含义不同
补充: API便于'批量'和'自动化'
官方Admin API 地址
③ API快速创建upstream和target
upstream wzj {
server 172.25.2.100:8010 weight=1;
server 172.25.2.100:8011 weight=2;
}
Upstreams API详细解读
说明: 创建一个名字叫作'wzj'的'upstream_id'
说明: 往'wzj'中添加'两个traget'
核心'API': /upstreams/{upstream name or id}/targets/
++++++ '修改targets' ++++++
curl -w '\n' -X PATCH \
'http://localhost:8001/upstreams/wzj/targets/172.25.2.100:8011' \
--data "target=192.168.122.1:8011"
③ 创建service和route
Service 详细API操作
说明: 建立upstream和service的'关联',这里是构造'proxy_pass'
Route 详细API操作
说明: 创建一个'location'为'path'的route
API: /services/{service name or id}/routes
说明: 一个'service'可能有多个'路由策略'
④ 用户访问
8001: kong的'管理'默认端口
8000: 用户'访问'的默认端口('统一入口') --通过 'proxy_listen' 修改
1337:'konga'默认地址
说明: 通过'host'和'route'唯一确定最终'接收请求'的路由
强调: 是'动态负载均衡',修改配置并没有进行'reload|restart'的操作
⑤ 小结
(2)Basic Auth 基本身份认证
官方 Basic Authentication 插件
Plugins Admin API
① 新增插件
重点:插件作用'不同'的作用域
说明:可以在'服务、路由、全局(不同的粒度)'上配置,后续演示从'Konga'的UI配置
++++++++++++ '这里在服务上配置插件' ++++++++++++
说明: 这里所有的'All Consumer'都可以访问这个'插件'
② 创建一个tony 的Consumer
+++++++++++++++ 'Consumer是什么' +++++++++++++++
1)理解:将'Consumer'与'用户'进行'一一映射',即一个consumer'代表'一个'用户或应用'
2)对于KONG而言,'Consumer的核心原则'是您可以为其'添加插件',从而'自定义'它的请求行为.
3)或许您会有'一个手机APP应用',并为他的'每个版本'都定义一个consumer;
又或者您有'一个或几个'应用,并为这些应用定义'统一个consumer'
又或者可以基于'安卓|IOS'
4)Consumer是'使用Service'的用户
eg: gitlab账号就是一个Consumer是使用gitlab Open API Service
5)Consumer的核心原则是您可以'为其添加Plugin插件',从而自定义他的请求行为;
6)Consumer下可以'创建多个APP'(eg:您的gitlab账号中您可以创建'多个'gitlab Apps )
7)用户是与使用您的API的个人相关联,可用于'追踪、访问管理'等
Consumer Admin API
③ 创建一个Basic凭证
备注: 一个'Consumer'下可以添加多个'凭据'
④ 客户端测试
(3)Kong的限流配置
说明: 后续'补充'
①②③④⑤⑥⑦⑧⑨⑩
(4)黑白名单配置
①②③④⑤⑥⑦⑧⑨⑩
三 Kong相关参考
kong github官方地址
kong中文翻译文档
知乎上关于kong的集合
kong参考地址