对于刚开始学习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:允许访问该路由的协议;http\https。默认两个都允许

     methods:匹配该路由的http方法,GET\POST

       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网关的配置先有个简单的梳理,有个大概的流程模型。后续再针对每个模块单独进行整理。


人生在世,杂事七八;饭要少吃,事要多知;抽个时间,总结一下;乐在分享,自在提升

kong网关: service+route+upstream的更多相关文章

  1. API网关之Kong网关简介

    1. Kong简介 那么,Kong是一个什么东东呢?它是一个开源的API网关,或者你可以认为它是一个针对API的一个管理工具.你可以在那些上游service之上,额外去实现一些功能.Kong是开源的, ...

  2. kong网关命令(一)

    上次在虚拟机里安装kong网关后,因为版本(1.4)太高,目前Kong Dashboard无法支持, 后续发现Git上有个开源工具Kong admin ui,下载源码并部署到NGINX. 但是发现使用 ...

  3. 在K3s上使用Kong网关插件,开启K3s的无限可能!

    我的工作中很重要的一部分是参加各种各样的技术会议.最近参加的是去年11月的北美KubeCon,在会议的最后一天,所有人都焦头烂额,我也一直机械地向不同的人重复我的自我介绍.后来,我已经十分烦躁,决定逃 ...

  4. 使用KONG网关实现接口迁移的灰度验证

    在我们对一个API站点进行微服务化的过程中,使用KONG网关可以实现以下几个效果: 1. 业务线无感知,其实内部已经被Kong转到其他站点上执行了,这对业务线特别友好. 2. 可以实现租户级/接口级灰 ...

  5. MacOs下安装Kong网关

    写在前面: 持续记录一下自己在解决api网关kong上的各种问题. 1.关于Kong网关 这是官网地址:https://konghq.com/ 2.通过brew安装postgres 因为kong的数据 ...

  6. Kong网关安装之Docker版(2)

    1.安装kong管理工具:konga或者kong-dashboard,这里选择konga 拉取konga镜像: sudo docker pull pantsel/konga:0.14.4 初始化kon ...

  7. Kong网关安装之Docker版(1)

    前言: Kong 是天生的微服务网关.她的官方简介是:Kong 是一个云原生,高效,可扩展的分布式 API 网关. 自 2015 年在 github 开源后,广泛受到关注,目前已收获 1.9w+ 的 ...

  8. kong配置service和route实现简单API代理

    目录 通过konga连接kong实现API接口代理 1. ADD NEW SERVICE 2. ADD ROUTE 3. 验证API 代理 浏览器验证 请求kong api kong使用Admin A ...

  9. k8s运维记 - 如何让部署到k8s的kong网关托管自定义静态资源?

    目的 使用kong作为目录/data/reports的静态资源服务器,为了测试,已于目录/data/reports下创建文件report.html,如下: <html> <head& ...

随机推荐

  1. Celery如何修复Python的GIL问题

    小结: 1. Celery如何修复Python的GIL问题https://python.freelycode.com/contribution/detail/346 最近,我重读了Glyph写的Uny ...

  2. Linux自动获取IP地址 重启不会消失

    网络设置 root用户登录    编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 将ONBOOT=no 改为 ONBOOT=yes 并保存 重启network ...

  3. python中 将数字转化为人民币的形式

    def fn(args): """ 将金额转化为人民币模式,带逗号分隔,保留小数点两位,四舍五入 :param args: :return: ""&q ...

  4. C#泛型学习

    什么是泛型 泛型是程序设计语言的一种特性.允许程序员在强类型程序设计语言中编写代码时定义一些可变部分,那些部分在使用前必须作出指明.各种程序设计语言和其编译器.运行环境对泛型的支持均不一样.将类型参数 ...

  5. Tips for vcpkg

    概述 vcpkg是微软开发的在Windows, Linux和MacOS平台管理C/C++库的开源工具. 快速开始 要求 使用vcpkg需满足如下条件: Windows 10, 8.1, 7, Linu ...

  6. (三)表单与servlet的初步结合

    一.form表单基本使用 <form>标签可创建一个表单,属性如下: <form>标签子标签可以有如下: <input> : 用于搜集用户信息. <input ...

  7. 禁止CSRF校验实例

    静态文件----提交表单 本例在static目录中建立了一个from.html静态页面,该页面有一个<form>标签,用于向服务端提交POST请求,然后在post.py脚本文件中添加一个路 ...

  8. 【Leetcode_easy】709. To Lower Case

    problem 709. To Lower Case solution1: class Solution { public: string toLowerCase(string str) { stri ...

  9. 第二章 身份验证——《跟我学Shiro》

    转发:https://www.iteye.com/blog/jinnianshilongnian-2019547 目录贴:跟我学Shiro目录贴 身份验证,即在应用中谁能证明他就是他本人.一般提供如他 ...

  10. charles 白名单

    本文参考:charles 白名单 charles 白名单 白名单工具,允许您阻止除选定位置之外的所有请求. 注意:如果一个请求与"黑名单"和"白名单"同时匹配成 ...