对于刚开始学习kong网关,总是一脑子浆糊迷迷糊糊。虽然已经安装好,但却不知道接下来如何下手,
因为包含项太多:service、routes、upstream、consumer、plugins等等。一时不知从何下手配置服务。
最后又重新打开kong网关的基本介绍,看完之后决定先把问题简单化。所以第一步就先搭建一个service和route,
随后又构建了upstream。这三部分完成之后,一个基本的网关功能就算实现了。
简单画了一个流程图,基本表现了kong网关的调用过程。一共分为五部分:用户客户端、routes、services、upstream、target服务端。
客户端就是调用方,
routes路由匹配客户端的请求规则。匹配成功后分配到service层。一个路由指向一个service,一个service可以被多个不通规则的路由routes指向。
访问地址是kong网关地址+代理端口(默认http:8000,https:8443)
service服务是一个抽象服务层,可以用于指向具体物理服务(target),也可以指向upstream用于实现物理服务的负载效果。一个service对于upstream、target都是一对一的关系。
upstream主要用于实现kong的负载功能,一个service匹配到一个upstream后,upstream可以指向多个target服务以此来实现负载的效果。
target服务端指的就是最后的物理服务,当然也可以是其他的虚拟服务。
接下来开始搭建,因为上面的每一层都需要依赖下一层进行配置,所以我们可以从低层开始配置(也开始先创建高层,随后再行修改配置)
注意:以下新增命令都是post请求,如果使用get请求会返回已创建的信息;kongIp指的是kong网关的地址。http请求使用8001端口,https请求使用8444端口。
一、upstream
命令:http://kongIp:8001/upstreams/
主要参数:name(不能为空,service指向时使用),
algorithm(负载规则):默认round-robin。目前支持三种:round-robin, consistent-hashing
, or least-connections
healthchecks.active.type:检查目标服务器target的健康方式。一共三类tcp、http、https
healthchecks.active.http_path:使用http协议检查target服务是否健康时绑定的路径。该路径可以指向target服务的一个请求地址,用于检测
target:指向具体得服务地址或者其他中间件服务。可匹配多个target。在新增target时需设定weight(权重),用于负载。
每个新建的target会有一个health指标,用于标记target是否联通健康。就是通过 healthchecks.active.type、healthchecks.active.http_path以及其他参数监测。
二、services
命令:http://kongIp:8001/services
主要参数:name:可为空,创建后生成一个id。routes通过id绑定service
protocol:请求upstream的协议(http、https)。默认http
host:upstream name(一定要和upstream名称保持一致)
port:请求upstream的端口(虚拟端口,可自定义)。默认80
path:请求upstream的路径。
三、routes
命令:http://kongIp:8001/routes
主要参数:name:route Name
protocols:允许访问该路由的协议;httphttps。默认两个都允许
methods:匹配该路由的http方法,GETPOST
hosts: 匹配该路由的host地址,可以是ip也可以是域名。可以配置多个。如果是域名的话注意需要有域名解析
paths:匹配路由访问的路径
service.id:指向服务的id
以上就是这三部分构造的主要参数值。还有未列出的参数值大多有默认值。需要的话可自行添加修改
ps:
routes:http://centos7.kong:8000/land
service:http://landservice:9000/
upstream:http://land_up
target:http://192.168.60.1:9003/land
以上是我配置的信息,配置完成后可以通过访问routes地址直接访问到http://192.168.60.1:9003/land应用服务
主要通过这边文章对kong网关的配置先有个简单的梳理,有个大概的流程模型。后续再针对每个模块单独进行整理。
人生在世,杂事七八;饭要少吃,事要多知;抽个时间,总结一下;乐在分享,自在提升