【Kong Gateway】全面解析Kong Gateway:服务、路由、upstream、插件的核心概念介绍

Kong Gateway 是一个功能强大的 API 网关,提供了丰富的 API 管理功能,包括流量控制、认证、路由、监控等。以下是 Kong Gateway 中的一些核心概念及它们之间的关系:

1. Service(服务)

定义:

在 Kong 中,Service 表示一个后端的上游服务,它是 API 请求的目标。每个 Service 都包含了与目标服务相关的配置,如服务地址、端口等。通过 Kong Gateway,客户端请求会被路由到对应的 Service,然后通过 Route 定义的规则将请求转发到服务的不同路径。

关联:

  • Service 是 Kong Gateway 中路由请求的目标,它会将请求转发到实际的上游服务器。
  • RouteService 紧密关联,Route 是将外部请求与内部的 Service 连接起来的桥梁。

示例:

创建一个 Service 时,你会指定它的上游服务器地址、协议等。

bash 复制代码
curl -X POST http://localhost:8001/services/ \
  --data "name=example-service" \
  --data "url=http://example.com"

2. Route(路由)

定义:

Route 是 Kong 中用于定义 API 路径和方法的实体。它指定了如何将外部请求(如 HTTP 请求)路由到一个或多个 Service。你可以为特定的请求配置路由规则,比如基于路径、方法、主机名等。

关联:

  • Route 通过与 Service 关联,决定了如何将客户端请求路由到后端的上游服务。
  • Route 可以与 Plugins 关联,用来对特定路由的请求进行处理,比如认证、限流等。

示例:

创建一个与 Service 关联的 Route,例如:

bash 复制代码
curl -X POST http://localhost:8001/routes \
  --data "service.id=example-service-id" \
  --data "hosts[]=example.com" \
  --data "paths[]=/api"

3. Consumer(消费者)

定义:

Consumer 是 Kong 中的一个抽象,代表一个服务的使用者。Consumer 用来管理与 API 服务的关系,例如认证信息、访问限制等。消费者可以是应用程序、用户、设备等。通过创建消费者,你可以对每个消费者单独配置访问策略和流量控制。

关联:

  • Consumer 可以和 Plugins 关联,用于为特定消费者配置流量限制、认证等策略。
  • Consumer 可以与 RouteService 关联,通过为不同消费者配置不同的 API 访问策略来实现细粒度的访问控制。

示例:

创建一个消费者:

bash 复制代码
curl -X POST http://localhost:8001/consumers/ \
  --data "username=jsmith"

4. Consumer Group(消费者组)

定义:

ConsumerGroup 是对多个 Consumer 的集合,用于更高效地管理多个消费者。它是对消费者的逻辑分组,可以在 Kong 中设置一个组策略,统一管理组内所有消费者的访问控制、限流等配置。虽然 Kong 原生没有 ConsumerGroup 的直接支持,但在某些场景中,可以通过创建多个消费者并通过命名方式管理,或者通过自定义 Plugin 来模拟类似的功能。

关联:

  • ConsumerGroup 中的每个 Consumer 都可以与 RouteService 以及 Plugins 关联,通过配置这些元素来实现批量管理和策略配置。

5. Upstream(上游)

定义:

Upstream 是 Kong 中用于定义多个上游服务实例的概念。通过 Upstream,你可以配置一个负载均衡池,其中包含多个 Target(即上游服务实例)。这样,当流量达到 Kong 时,Kong 会将请求负载均衡地分配到池中的服务实例上。

关联:

  • UpstreamService 紧密相关,它通过聚合多个目标服务来实现负载均衡。
  • TargetUpstream 的组成部分,用于定义具体的服务实例地址。Upstream 中的多个 Target 可以提供高可用性和负载均衡。
  • Service 可以选择绑定到一个 Upstream,从而将请求分发到不同的服务实例。

示例:

创建一个 Upstream 并添加多个 Target

bash 复制代码
curl -X POST http://localhost:8001/upstreams \
  --data "name=example-upstream"

curl -X POST http://localhost:8001/upstreams/example-upstream/targets \
  --data "target=192.168.1.1:80"

curl -X POST http://localhost:8001/upstreams/example-upstream/targets \
  --data "target=192.168.1.2:80"

6. Plugins(插件)

定义:

Plugin 是 Kong 用来扩展功能的模块。Kong 提供了多种插件,用于实现 API 管理的不同功能,如身份验证、限流、日志记录等。插件可以作用于不同的级别,包括全局、服务、路由、消费者等。

关联:

  • Plugin 可以与 ServiceRouteConsumer 等实体关联,以实现针对性的功能。
  • 插件可以用于控制 API 流量、实现认证、处理日志等。

示例:

Service 启用 Rate Limiting 插件:

bash 复制代码
curl -X POST http://localhost:8001/services/example-service/plugins \
  --data "name=rate-limiting" \
  --data "config.minute=5" \
  --data "config.policy=local"

各个概念之间的关系

  1. Service 与 Route:

    • Service 定义了后端服务,Route 用于将客户端请求路由到相应的 Service。每个 Route 可以指定路径、主机、HTTP 方法等,决定了请求如何被路由到后端服务。
  2. Consumer 与 Plugins:

    • Consumer 代表了 API 的使用者,可以为每个消费者配置不同的插件策略。比如你可以为某个 Consumer 启用认证插件、流量限制插件等,以控制该消费者的访问行为。
  3. Service 与 Upstream:

    • Service 可以与一个或多个 Target 关联,这些 Target 组成了一个 Upstream。通过 Upstream,Kong 可以实现负载均衡,将请求分发到多个后端服务实例。
  4. Route 与 Plugins:

    • 插件可以应用于 Route,例如,给某个特定路径启用流量控制、认证等插件。
  5. Consumer 与 Route:

    • 你可以为特定的消费者配置特定的 RoutePlugin,实现精细化的流量控制和认证管理。

通过这些概念的配合,Kong Gateway 提供了灵活且强大的 API 管理功能,帮助开发者高效地管理 API 流量、认证和安全等各方面的需求。

相关推荐
王da魔18 小时前
Keepalived
网络·云原生
hzulwy18 小时前
Linux网络配置与测试
linux·运维·网络
五阿哥永琪19 小时前
HTTP包含哪些内容?
网络·网络协议·http
Web极客码20 小时前
WordPress 被重定向到垃圾站的排查全过程
运维·服务器·网络·wordpress
hoududubaba21 小时前
ORAN共享小区的级联FHM模式
网络·网络协议
余瑜鱼鱼鱼21 小时前
NAT机制总结
运维·服务器·网络
The_Uniform_C@t21 天前
AWD | ATT&CK实战系列--蓝队防御(一)
网络·学习·网络安全
夜来小雨1 天前
MSTP——多生成树协议
网络
十月南城1 天前
Exactly-once的真实成本——端到端一致性、两阶段提交与延迟权衡
网络
天上飞的粉红小猪1 天前
网络层补充内容
网络·智能路由器