相关文章推荐
鬼畜的番茄  ·  2024年南阳市中心城区中小学学区划分、招生 ...·  10 月前    · 
冷静的乌冬面  ·  岚图梦想家购车手册 | ...·  1 年前    · 
完美的消炎药  ·  妹妹太爱我了怎么办观看 - 快看漫画·  1 年前    · 
考研的海豚  ·  UML建模是什么? - 知乎·  1 年前    · 
温暖的乒乓球  ·  设计高管离职对长城WEY的影响有多大?-手机 ...·  1 年前    · 
Code  ›  为什么 APISIX Ingress 是比 Traefik 更好的选择?开发者社区
apache 流量 kubernetes 虚拟侵入
https://cloud.tencent.com/developer/article/2207539
朝气蓬勃的火柴
2 年前
作者头像
米开朗基杨
0 篇文章

为什么 APISIX Ingress 是比 Traefik 更好的选择?

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 云原生实验室 > 为什么 APISIX Ingress 是比 Traefik 更好的选择?

为什么 APISIX Ingress 是比 Traefik 更好的选择?

作者头像
米开朗基杨
发布 于 2023-01-09 16:53:06
381 0
发布 于 2023-01-09 16:53:06
举报

❝作者:张晋涛,API7.ai 云原生专家,Apache APISIX Committer、Kubernetes Ingress Nginx Reviewer

Apache APISIX Ingress

Apache APISIX Ingress[1] 是一个使用 Apache APISIX 作为数据面的 Kubernetes Ingress controller 实现。

目前,它支持多种规则的配置方式,包括 Ingress、APISIX Ingress CRD (自定义资源)以及 Gateway API。

其整体采用数据面与控制面分离的架构,由 Apache APISIX 承载实际的业务流量。因此大大提升了整体的安全性,极大避免了由于数据面被攻击而导致 Kubernetes 集群被攻击的可能。

Traefik

Traefik 是由 Traefik Labs 开源的一款反向代理和 负载均衡 器。它在 Kubernetes 中支持多种规则的配置方式,包括 Ingress、Traefik IngressRoute(自定义资源)和 Gateway API。

Traefik 是一个统一的二进制文件,控制面和数据面的代理逻辑均绑定在一起。因此,如果受到攻击或者有远程执行的安全漏洞被利用,极有可能存在 Kubernetes 集群被攻击的情况。

APISIX Ingress vs Traefik

接下来我将从以下几个维度对 Apache APISIX Ingress 和 Traefik 进行一些对比,方便大家在选型时对产品有更多的认知。

协议支持

作为网关,最为核心的能力便是要能够正确的代理流量。作为 Kubernetes 集群的入口网关,主要处理如下两部分的流量:即 Client 到网关的流量 和 网关与 Upstream 的流量 。如下所示:

Client <----> Ingress <----> Upstream Service

当前的协议多种多样,以下简单汇总了两个项目对协议的支持,仅供参考。

协议

APISIX Ingress

Traefik

HTTP/HTTPS

支持

支持

HTTP/2

支持

支持

HTTP/3

不支持

支持

TCP

支持

支持

UDP

支持

支持

WebSocket

支持

支持

Dubbo

支持

不支持

此外,无论是 APISIX Ingress 还是 Traefik,均可通过 HTTP/2 或者 TCP 代理等方式支持 gRPC、MQTT 等协议,故而未在上述表格中列出。

从协议支持的角度来看,APISIX Ingress 和 Traefik 各有优势。此外,APISIX 对于 HTTP/3 的支持正在规划中,后续也可随时关注社区动态。

可扩展性

由于业务需求多种多样,所以可扩展性也是进行技术选型的一个主要指标。APISIX Ingress 和 Traefik 均提供了一些扩展方式,我们将分别进行介绍。

APISIX Ingress

在 APISIX Ingress 中进行功能扩展,主要是通过开发自定义插件来完成。当前,APISIX Ingress 主要支持如下几种插件的开发方式:

  • 通过 Lua 进行插件的开发:这种方式相对简单,并且几乎没有性能损耗;
  • 通过 Plugin Runner 开发:这种模式下支持 JAVA/Python/Go 等多种计算语言进行开发,方便用户利用现有的业务逻辑,同时无需学习新语言;
  • 通过 WASM 进行插件插件:这种模式下,可以使用任何支持构建出 WASM 的语言进行插件开发;此外,还可以通过 Serverless 插件来直接编排 Lua 代码,满足业务需求。

当然,如果你有 Lua 模块的开发经验,也可以直接编写 Lua 模块,然后进行加载即可,只需在配置文件中增加如下内容即可:

apisix:
 
推荐文章
鬼畜的番茄  ·  2024年南阳市中心城区中小学学区划分、招生办法出台!|滨河|人民路|文化路|建设路|解放路|长江路_网易订阅
10 月前
冷静的乌冬面  ·  岚图梦想家购车手册 | 家用首推入门版,舒适性表现不错_腾讯新闻
1 年前
完美的消炎药  ·  妹妹太爱我了怎么办观看 - 快看漫画
1 年前
考研的海豚  ·  UML建模是什么? - 知乎
1 年前
温暖的乒乓球  ·  设计高管离职对长城WEY的影响有多大?-手机新浪汽车
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号