Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >为什么 APISIX Ingress 是比 Traefik 更好的选择?

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

作者头像
米开朗基杨
发布于 2023-01-09 08:53:06
发布于 2023-01-09 08:53:06
1.2K00
代码可运行
举报
文章被收录于专栏:云原生实验室云原生实验室
运行总次数:0
代码可运行

❝作者:张晋涛,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 的流量。如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 模块,然后进行加载即可,只需在配置文件中增加如下内容即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apisix:
...
extra_lua_path: "/path/to/example/?.lua"

具体关于插件的的开发步骤和使用,请参考 Apache APISIX 的插件开发文档[2]

Traefik

Traefik 也提供了相关插件机制用于功能扩展。但是 Traefik 是由 Go 进行开发的,因此它的插件也需要用 Go 进行开发。

在开发完成后,就可以在 Traefik 的配置中添加如下内容进行引用了(需注意,插件的名字需要与包名保持一致)。例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
experimental:
localPlugins:
example:
moduleName: github.com/traefik/pluginproviderdemo

总体来看,APISIX Ingress 提供了更多种的扩展方式,可以根据实际情况进行灵活选择。可以根据自己喜欢或擅长的工具即可,更容易实现与现有业务集成。而 Traefik 目前则只支持通过 Go 语言进行开发,选择较少。

生态

在进行技术选型时候,除了考虑一些性能表现,还需要对产品的整个生态支持进行考察。比如项目所使用的协议、项目归属以及与现有基础设施是否可以整合等等。下方简单整理了几个角度进行呈现(包含了控制面和数据面)。

对比维度

APISIX Ingress

Traefik

归属

Apache 软件基金会(ASF)

Traefik Labs

协议

Apache 2.0

MIT

诞生时间

2019 年 6 月

2015 年 8 月

consul

支持

支持

nacos

支持

不支持

Eureka

支持

不支持

etcd

支持

支持

zookeeper

支持

支持

DNS

支持

不支持

此外,这两个项目都非常积极与一些周边项目进行了集成与合作。比如 Rancher、KubeSphere 等。

从生态合作角度来看,APISIX Ingress 比 Traefik 提供了更为广泛的集成能力,尤其是与基础组件。因此在进行技术选型时,可以结合当前自己所用的基础组件的情况进行权衡。

来自用户的声音

在今年,我们也看到了很多来自用户的声音,他们开始在业务架构中用上了 APISIX Ingress。比如 地平线使用 APISIX Ingress 替换了 Traefik[3],主要是考虑如下方面:

  • 通过 Annotation 增加的配置不易重用;
  • Traefik 中默认的行为与 NGINX 中不同,用户在使用时候会产生困惑;在切换为 Apache APISIX Ingress 后,得益于 APISIX Ingress 丰富的插件生态,绝大多数需求均可通过内置插件满足。并且插件的配置可直接通过 APISIX Ingress 的 ApisixRoute 资源进行定义,比较直观。也可以通过 ApisixPluginConfig 进行插件模板的配置,在其他的 ApisixRoute 资源中进行引用。

APISIX Ingress 的数据面性能更佳,能高效地应对日益增长的业务流量,而不会陷入性能瓶颈。

除地平线以外,包括 少年得到[4]观为智慧[5] 等公司也都使用 APISIX Ingress 替换了 Traefik,更多用户案例请参考 用户案例[6]

此外,Apache APISIX 社区非常活跃,在 GitHub 和 Slack 等频道上都会快速响应。也期待各位在社区积极进行反馈与讨论。

总结

本文从协议支持、可扩展性和生态等方面对比了 Apache APISIX Ingress 和 Traefik。从内容中也可以看到,APISIX Ingress 在可扩展性和生态集成方面有一定的优势,用户可以更容易地对 APISIX Ingress 进行扩展,以及与一些基础组件进行集成。

希望本文可以为正在选型 Kubernetes Ingress Controller 产品的用户提供一些帮助。

引用链接

[1]

Apache APISIX Ingress: https://github.com/apache/apisix-ingress-controller/

[2]

Apache APISIX 的插件开发文档: https://apisix.apache.org/docs/apisix/plugin-develop/

[3]

地平线使用 APISIX Ingress 替换了 Traefik: https://www.apiseven.com/usercase/apisix-ingress-with-horizon-ai

[4]

少年得到: http://www.igetcool.com/

[5]

观为智慧: http://www.gwwisdom.com/

[6]

用户案例: https://www.apiseven.com/usercases

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
APISIX Ingress 如何支持自定义插件
Kubernetes 中的 Ingress 是一种资源对象,用于定义如何从 Kubernetes 集群外访问到 Kubernetes 集群内的服务,其中包含了具体的访问规则,通常情况下客户端使用 HTTP/HTTPS 协议进行访问。
Jintao Zhang
2023/02/26
4370
APISIX Ingress 如何支持自定义插件
Kubernetes Ingress 控制器的技术选型技巧
作者:厉辉,腾讯云中间件API网关核心研发成员 在 Kubernetes 的实践、部署中,为了解决 Pod 迁移、Node Pod 端口、域名动态分配等问题,需要开发人员选择合适的 Ingress 解决方案。面对市场上众多Ingress产品,开发者该如何分辨它们的优缺点?又该如何结合自身的技术栈选择合适的技术方案呢?在本文中,腾讯云中间件核心研发工程师厉辉将为你介绍如何进行 Kubernates Ingress 控制器的技术选型。 名词解释 阅读本文需要熟悉以下基本概念: 集群:是指容器运行所需云
腾讯技术工程官方号
2020/02/25
8890
Kubernetes Ingress 控制器的技术选型技巧
部署一个支持Dapr 的Kubernetes APISIX Ingress
在这篇文章中,我将展示如何创建一个 APISIX控制器,该控制器在 Kubernetes 集群中公开启用 Dapr 的应用程序。 本质上,APISIX控制器将配置相同的标准 Dapr annotations以注入daprd sidecar。 通过公开这个 sidecar,它将允许外部应用程序与集群中启用 Dapr 的应用程序进行通信,请参阅 Dapr API 参考。下图是我们实际项目中的架构图:
张善友
2021/11/16
1.1K0
部署一个支持Dapr 的Kubernetes APISIX Ingress
Apisix-Ingress服务发现详解
Apache APISIX 是一个基于微服务 API 网关,其不仅可以处理南北向的流量,也可以处理东西向的流量即服务之间的流量。Apache APISIX 集成了控制面板和数据面,与其他 API 网关相比,Apache APISIX 的上游、路由、插件全是动态的,修改这些东西时都不用重启。并且 Apache APISIX 的插件也是热加载,可以随时插拔、修改插件。
tunsuy
2023/10/23
6670
Apisix-Ingress服务发现详解
Kubernetes (K8S)中APISIX高级使用
现在当我们访问 http://whoami.boysec.cn/tls 或者 http://whoami.boysec.cn/tls/ 的时候都可以得到正常的结果,一般来说我们可能希望能够统一访问路径,比如访问 /tls 子路径的时候可以自动跳转到 /tls/ 以 Splash 结尾的路径上去。同样要实现该需求我们只需要使用一个名为 redirect 的插件即可,该插件是 URI 重定向插件,可配置的属性如下所示:
王先森sec
2023/10/16
1.4K0
Kubernetes (K8S)中APISIX高级使用
汽车智能计算平台公司「地平线」在 Ingress Controller 的探索和实践
在当前的汽车行业,大多数公司都在向自动驾驶和新能源方向转型,而对于自动驾驶方面,每家企业都投入了大量的资源来完成自动驾驶模型的开发与训练,其中出现了很多明星企业,比如汽车智能计算平台引领者地平线。地平线主要从事汽车智能计算平台的研发,具有领先的深度学习算法和芯片设计能力,致力于通过底层技术赋能,推动汽车产业的创新发展。
米开朗基杨
2022/11/07
5410
汽车智能计算平台公司「地平线」在 Ingress Controller 的探索和实践
为什么 APISIX Ingress 是比 Emissary-ingress 更好的选择?
Kubernetes Ingress 是一种 API 对象,用于定义集群外部流量如何路由到集群内部服务的规则。Ingress Controller 通常用于实现 Ingress 资源的相关逻辑,并统一管理这些流量规则。
米开朗基杨
2023/09/13
4500
为什么 APISIX Ingress 是比 Emissary-ingress 更好的选择?
Ingress-Nginx已经淘汰了?还是Apisix太强大!
--https://www.anthropic.com/index/anthropic
希里安
2023/10/30
1K0
Ingress-Nginx已经淘汰了?还是Apisix太强大!
API 网关 Apache APISIX 3.0 版本正式发布!功能丰富
作为开源的云原生 API 网关,Apache APISIX 致力于在性能和使用体验上为开发者和用户们带来更好更优异的表现,帮助企业解决一些关于云原生和微服务技术下遇到的新问题。
我的小碗汤
2023/03/20
1.1K0
API 网关 Apache APISIX 3.0 版本正式发布!功能丰富
K8S Ingress 之 Apache APISIX 解析
在云原生时代,基于主流的云操作系统 Kubernetes ,其常见的外部流量访问方式主要基于以下 NodePort、LoadBalancer 以及 Ingress 等。
Luga Lee
2021/12/09
3.9K0
K8S Ingress 之 Apache APISIX 解析
保姆级教程,从概念到实践帮你快速上手 Apache APISIX Ingress
作者:张晋涛,Apache APISIX Committer、Kubernetes Ingress Nginx Reviewer,多个云原生开源项目的贡献者。
Jintao Zhang
2021/10/25
7.4K2
Kubernetes (K8S) 中安装部署APISIX
Apache APISIX 是一个基于 OpenResty 和 Etcd 实现的动态、实时、高性能、可扩展的微服务 API 网关,目前已经是 Apache 顶级项目。提供了丰富的流量管理功能,如负载均衡、动态路由、动态 upstream、A/B 测试、金丝雀发布、限速、熔断、防御恶意攻击、认证、监控指标、服务可观测性、服务治理等。可以使用 APISIX 来处理传统的南北流量以及服务之间的东西向流量。
王先森sec
2023/10/17
3.3K0
Kubernetes (K8S) 中安装部署APISIX
马蜂窝如何利用 APISIX 网关实现微服务架构升级
作者 | 董红帅,马蜂窝微服务体系建设以及基础服务能力建设专家。 马蜂窝作为旅行社交平台,是数据驱动的新型旅行电商。基于十余年的内容积累,马蜂窝通过 AI 技术与大数据算法,将个性化旅行信息与来自全球各地的旅游产品供应商实现连接,为用户提供与众不同的旅行体验。 随着业务的发展,马蜂窝架构也在跟随技术步伐进行更迭,开始基于 Kubernetes 进行更多的延展。在这个技术背景下,需要针对云服务开启新一轮的架构更新,比如:微服务场景建设新的蜂效平台及周边设施来支持迭代和流量泳道的能力,在多 Kubernete
深度学习与Python
2023/03/29
6980
马蜂窝如何利用 APISIX 网关实现微服务架构升级
Apache APISIX Ingress Controller 正式加入 ASF
云原生时代,Ingress 作为Kubernetes集群中服务的入口,已经被大家所接受。除了Kubernetes默认的NGINX Ingress Controller(基于原生 NGINX)之外, 业界也有不少其他第三方的 Ingress Controller 的实现。Apache APISIX作为国内最快毕业的 Apache 顶级项目,实现了Apache APISIX Ingress Controller,为Kubernetes用户提供了功能更为便捷的 Ingress 实现。
Jintao Zhang
2020/12/14
1.5K0
APISIX Ingress 控制器的安装及原理
APISIX 是动态、实时、高性能的 API 网关。它提供丰富的流量管理功能,比如负载均衡、动态上游、金丝雀发布、熔断、认证、可观测性等。既可以使用 APISIX API 网关处理传统的南北向流量,也可以使用它处理服务间的东西向流量。同时,它也可被用作 Kubernetes Ingress 控制器。 APISIX Ingress 控制器提供 Helm 安装方式,但是使用原生 YAML 安装,更加有助于理解其原理。
小阑本阑
2023/06/09
1.2K0
APISIX Ingress 控制器的安装及原理
基于 Apache APISIX 的全流量 API 网关
温铭 支流科技 CEO 兼联合创始人 本文将从云原生时代的机遇和挑战说起,介绍一个全新的开源高性能云原生 API 网关——Apache APISIX,探讨如何解决云原生时代 API 网关所面临的一些痛点,最后介绍该开源项目未来的规划。 背景 云原生的机遇和挑战 很多应用和服务都在向微服务、容器化迁移,形成新的云原生时代。云原生是下一个 5-10 年的技术颠覆,重写了传统企业的技术架构,例如云原生中的 Kubernetes 颠覆了传统操作系统,所有的“主机”(node 上的容器)由 Kubernetes
博文视点Broadview
2023/05/19
1.6K0
基于 Apache APISIX 的全流量 API 网关
Apache APISIX 在移动云对象存储 EOS 的应用与实践
中国移动云能力中心作为中国移动云设施构建者、云服务提供者以及云生态汇聚者,承担了移动云的技术研发、规划建设、运营维护、 合作引入、销售支撑、支持上云六大工作职责。
深度学习与Python
2021/10/13
7530
Apache Apisix初体验
Apache APISIX 是一个基于 OpenResty 和 Etcd 实现的动态、实时、高性能的 API 网关,目前已经是 Apache 的顶级项目。提供了丰富的流量管理功能,如负载均衡、动态路由、动态 upstream、A/B测试、金丝雀发布、限速、熔断、防御恶意攻击、认证、监控指标、服务可观测性、服务治理等。可以使用 APISIX 来处理传统的南北流量以及服务之间的东西向流量。
mikelLam
2022/10/31
1.1K0
Apache Apisix初体验
Ingress控制器那么多,到底该选哪一个?
在Kubernetes中,service IP和Pod IP主要供集群内部访问使用,对于集群外部是不可见的。
没有故事的陈师傅
2020/12/02
1K0
Ingress控制器那么多,到底该选哪一个?
云原生时代的流量入口:Envoy Gateway
流量入口代理作为互联网系统的门户组件,具备众多选型:从老牌代理 HAProxy、Nginx,到微服务 API 网关 Kong、Zuul,再到容器化 Ingress 规范与实现,不同选型间功能、性能、可扩展性、适用场景参差不齐。当云原生时代大浪袭来,Envoy 这一 CNCF 毕业数据面组件为更多人所知。那么,优秀“毕业生”Envoy 能否成为云原生时代下流量入口标准组件?
深度学习与Python
2020/08/07
2.2K0
云原生时代的流量入口:Envoy Gateway
相关推荐
APISIX Ingress 如何支持自定义插件
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验