API 网关、Kubernetes 网关和服务网格综合指南

本文介绍了API网关、Kubernetes网关和服务网格的区别和用例。API网关作为客户端和API之间的中间层,处理身份验证、安全性等功能。Kubernetes网关是Kubernetes原生API网关,包括Ingress和新推出的Gateway API,用于管理集群外部流量。服务网格专注于服务间的通信,使用Sidecar代理处理东西向流量。文中提到了Apache APISIX、Istio等解决方案,并讨论了金丝雀部署的配置。选择使用哪种技术取决于具体需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于 API 网关、Kubernetes 网关和服务网格,仍然存在很多混淆。很多是因为:

  1. 人们经常用相同的关键词提及这些技术,例如金丝雀部署、速率限制和服务发现。
  2. 所有这些技术都使用反向代理。
  3. 一些 API 网关有自己的 Kubernetes 网关和服务网格,反之亦然。
  4. 有很多文章/视频对这三种技术进行了比较,并得出了为什么一种技术优于另一种技术的结论。

在本文中,我将尝试解释这些技术并分享它们的根本区别以及如何迎合不同的用例。

API网关

API 网关位于您的客户端应用程序和 API 之间。它接受所有客户端请求,将它们转发到所需的 API,并在组合包中将响应返回给客户端。

它基本上是一个具有很多功能的反向代理。

除此之外,API 网关还可以具有身份验证、安全性、细粒度流量控制和监控等功能,让 API 开发人员只关注业务需求。

许多可用的 API 网关解决方案。一些流行的免费和开源解决方案是:

  • Apache APISIX:构建在 Nginx 之上的高性能、可扩展的云原生 API 网关。
  • Gloo Edge:一个建立在 Envoy 代理之上的 API 网关。
  • Kong:一个可插入的 API 网关,也是基于 Nginx 构建的。
  • Tyk:一个用 Go 编写的 API 网关,支持 REST、GraphQL、TCP 和 gRPC 协议。

GCPAWSAzure等云平台也有自己专有的 API 网关。

API 网关、Kubernetes 网关和服务网格支持金丝雀部署——在新软件版本普遍可用之前逐渐向一小部分用户推出新软件版本。

下面的示例展示了如何在 Apache APISIX 中配置金丝雀部署。

您可以使用以下配置向APISIX Admin API发送请求:

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code>curl http://127.0.0.1:9180/apisix/admin/routes/1 <span style="color:var(--syntax-literal-color)">\</span>
<span style="color:var(--syntax-error-color)">-H</span> <span style="color:var(--syntax-string-color)">'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1'</span> <span style="color:var(--syntax-error-color)">-X</span> PUT <span style="color:var(--syntax-error-color)">-d</span> <span style="color:var(--syntax-string-color)">'
{
  "uri":"/*",
  "plugins":{
    "traffic-split":{
      "rules":[
        {
          "weighted_upstreams":[
            {
              "upstream":{
                "name":"api-v1",
                "type":"roundrobin",
                "nodes":{
                  "api-v1:8080":1
                }
              },
              "weight":95
            },
            {
              "weight":5
            }
          ]
        }
      ]
    }
  },
  "upstream":{
    "type":"roundrobin",
    "nodes":{
      "api-v2:8080":1
    }
  }
}'</span>
</code></span></span>

APISIX 现在会将 95% 的流量路由到 api-v1 服务,将 5% 的流量路由到 api-v2 服务。

Kubernetes 网关

Kubernetes 网关只是 Kubernetes 原生 API 网关。也就是说,您可以使用 Kubernetes API 管理这些 API 网关,类似于 Kubernetes pod、服务或部署。

在 Kubernetes 中,您的 API 是部署在集群中的 pod 和服务。然后,您使用 Kubernetes 网关将外部流量定向到您的集群。

Kubernetes 提供了两个 API 来实现这一点,Ingress APIGateway API

Kubernetes 入口 API

Ingress API 的创建是为了通过引入路由和 SSL 终止等功能来克服默认服务类型NodePortLoadBalancer的限制。它还标准化了将 Kubernetes 服务暴露给外部流量的方式。

它有两个组件,IngressIngress controller

Ingress Kubernetes 本机对象定义了一组关于外部流量如何访问您的服务的规则。

此示例配置显示了基于 URI 路径和 Kubernetes Ingress 对象的路由流量:

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code><span style="color:var(--syntax-name-color)">apiVersion</span>: <span style="color:var(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值