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

作者:张晋涛,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 集群被攻击的可能。

fb592e5c831865f72474051cb38e1588.png

Traefik

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

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

faa1c91e0136754f13c0475678724a83.png

APISIX Ingress vs Traefik

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

协议支持

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

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

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

协议APISIX IngressTraefik
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:
...
extra_lua_path: "/path/to/example/?.lua"

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

Traefik

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

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

experimental:
localPlugins:
example:
moduleName: github.com/traefik/pluginproviderdemo

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

生态

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

对比维度APISIX IngressTraefik
归属Apache 软件基金会(ASF)Traefik Labs
协议Apache 2.0MIT
诞生时间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 资源中进行引用。

e4fb69895adae879cb79d92e7cff3048.png

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

16a722bd1c334db9ceca7f56792c3b63.gif

01aabbbc19cf808433437b973fa3c50b.png

你可能还喜欢

点击下方图片即可阅读

K8s 最强 CNI Cilium 网络故障排查指南

2022-12-16

46b01b804114dd72680eff6979563c38.jpeg

初探 Cloudflare 零信任 - 通过 Docker 部署 Bitwarden 密码管理器

2022-12-13

8f43a264337dbc9ad232d001f5ef30b8.jpeg

我将 9 个 ChatGPT 账号接入微信,我现在整个人都麻了...

2022-12-10

b7c92408160ed1558408b629a2448535.jpeg

AI 对话模型被网友玩坏了!这次还可以运行 Docker 容器...

2022-12-04

7e2e1aaea5a538ddb940ca3dd0d13983.jpeg

b5c4468250372bd6cc9414ccdf849dd4.gif

云原生是一种信仰 🤘

关注公众号

后台回复◉k8s◉获取史上最方便快捷的 Kubernetes 高可用部署工具,只需一条命令,连 ssh 都不需要!

3e25267671fd40e01aef55bf1979760c.gif

ee78ca1e8e3e1750304e73384f5be4e1.gif

点击 "阅读原文" 获取更好的阅读体验!

发现朋友圈变“安静”了吗?

9af7e89d23e6b531ac6c6e00ee546065.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/20924.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatOps的利器:Hubot

引言 近几年&#xff0c;DevOps 在各个企业用的风生水起&#xff0c;也衍生出了很多的其他的实践和理念&#xff0c;比如AIOps&#xff0c;DevSecOps&#xff0c; TestOps&#xff0c; BizOps 当然还有本文的主角 ChatOps大哥了。 说起ChatOps&#xff0c; 顾名思义就是通过聊…

大模型开发(五):实现Jupyter本地调用OpenAI API

全文共3000余字&#xff0c;预计阅读时间约15分钟 | 满满干货&#xff0c;建议收藏&#xff01; 大模型开发(五)&#xff1a;实现Jupyter本地调用OpenAI API OpenAI作为本轮大语言模型技术进步的先驱&#xff0c;其系列大型模型在效果上一直保持着领先。其推出的各类模型如文本…

[考研数据结构]第2章之顺序表的基本知识与操作

前言 从本篇文章开始&#xff0c;正式开启考研专业课之一的数据结构的复习之旅&#xff0c;数学与专业课并驾齐驱&#xff0c;早开始&#xff0c;后期才能游刃有余。另外博客重点分享数据结构需要动手实践的代码部分&#xff0c;对于概念的解释将被一笔带过或者忽略&#xff0c…

线程池 2(第二部分--循环队列)

在考虑如何去设计一个任务容器的时候&#xff0c;其实尝试了很多。最开始的时候直接用的是std::queue容器&#xff0c;主要是看了知乎上面的 “ 基于C11实现线程池 - 知乎 ”这个帖子&#xff0c;去封装一个安全队列。但是这个操作每次都要上一次锁&#xff0c;实在是太浪费时间…

ubuntu20.04 硬盘挂载、显卡驱动安装

前几天ubuntu系统莫名出问题了&#xff0c;修不好只能重装&#xff0c;在此记录安装ubuntu系统后的硬盘挂载和显卡驱动安装。 注意&#xff0c;本文并非教程&#xff0c;只是个人安装过程的记录&#xff0c;仅供参考 ubuntu系统&#xff1a;Ubuntu 20.04.6 LTS 硬件设备&…

一文带你搞清 ChatGPT 与 Azure OpenAI 的区别

这两周是我从2017年开始全职涉入 NLP 领域后最忙的两周&#xff0c;无数的同事和客户都在向我提出一个询问&#xff1a;ChatGPT 可以帮到我们什么&#xff1f; 特别是在2023年3月31日我做了一场微软 Azure OpenAI [布局助力企业]拥抱新智能时代的演讲之后&#xff0c;这几天我…

ChatGPT的真相:强泛化的秘密以及众多关键问题

进NLP群—>加入NLP交流群 本文转载自AI科技评论&#xff0c;作者韩庐山。 本文从ChatGPT带来的即时学习能力&#xff08;in-context learning&#xff09;入手&#xff0c;逐步深入地探讨了ChatGPT目前众多的关键性问题&#xff0c;包括&#xff1a; ChatGPT带来了从未有过的…

chatgpt赋能python:用Python向手机发送信息是如何实现的?

用Python向手机发送信息是如何实现的&#xff1f; 在今天的信息时代&#xff0c;随时随地保持联系已经成为生活不可或缺的一部分。随着技术的发展&#xff0c;我们可以使用各种方式发送和接收信息&#xff0c;而使用Python向手机发送短信是其中一种非常方便的方式。 Python的…

chatgpt赋能python:Python自动认证上网教程

Python自动认证上网教程 随着互联网的普及&#xff0c;越来越多的人需要通过手机、电脑等设备上网&#xff0c;而许多场所都要求进行认证才能使用网络。每次都手动操作认证费时费力&#xff0c;这时Python就可以派上用场了。Python是一种高级的编程语言&#xff0c;具有可读性…

双因素认证(2FA)教程

所谓认证&#xff08;authentication&#xff09;就是确认用户的身份&#xff0c;是网站登录必不可少的步骤。 密码是最常见的认证方法&#xff0c;但是不安全&#xff0c;容易泄露和冒充。 越来越多的地方&#xff0c;要求启用双因素认证&#xff08;Two-factor authenticatio…

如何实现双因素认证?

增强数字安全的愿望引起了世界各国政府的关注&#xff0c;所有政府都希望保护消费者和企业。因此&#xff0c;许多人提出了立法&#xff0c;将两因素身份验证 (2FA) 作为 IT 系统的强制性要求。其实&#xff0c;在我国等级保护制度中等级保护第三级以上都要求完成双因素认证的&…

网络安全合规-Tisax(汽车安全评估讯息交换平台)一

**TISAX&#xff08;汽车安全评估讯息交换平台&#xff08;可信信息安全评估交换平台&#xff09;&#xff09;**是2017年由德国汽车工业联合会(VDA) 联合欧洲网络交换所(ENX) 所推出的资讯交换平台&#xff0c;通过应用欧洲网络交换协会&#xff08;ENX&#xff09;和德国汽车…

从医疗保健攻击到HIPAA 合规性

医疗机构无疑是网络攻击的热门目标。攻击者因在暗网上出售一条健康记录而获取高额 佣金&#xff0c;在各行业网络安全报告中医疗保健行业的攻击事件占比居高不下&#xff0c;这有什么奇怪的吗&#xff1f; 根据2022 年 SonicWall 网络威胁报告&#xff0c;医疗保健行业&#x…

漫话:如何给女朋友解释鸿蒙OS是怎样实现跨平台的?

周末在家休息&#xff0c;女朋友在刷朋友圈&#xff0c;突然她问我&#xff1a; 鸿蒙OS回顾 2019年8月9日华为开发者大会上&#xff0c;华为消费者业务CEO余承东正式宣布发布自有操作系统鸿蒙&#xff0c;内核为Linux内核、鸿蒙微内核和LiteOS。未来将摆脱Linux内核和LiteOS&am…

腾讯研发动画组件,以后动画制作用PAG

你好&#xff0c;我是tiantian。 我们知道&#xff0c;动画特效可以辅助视觉制作焦点&#xff0c;引导注意力的方向&#xff0c;越来越为广大视觉设计师青睐&#xff0c;并广泛应用于各类场景开发。 关于动画设计工具&#xff0c;既有 Framer.js、Origami&#xff0c; 也有交互…

能直接修复代码 BUG,比 ChatGPT 还厉害

【公众号回复 “1024”&#xff0c;免费领取程序员赚钱实操经验】 大家好&#xff0c;又见面了&#xff0c;我是章鱼猫&#xff01; 最近 ChatGPT 非常的火&#xff0c;而且是火出圈的那种&#xff0c;各个领域的人都知道。但是不得不说程序员做的工具&#xff0c;对程序员还是…

chatgpt赋能Python-ipv4地址python

IPv4地址 Python编程介绍 IPv4地址在互联网中扮演着非常重要的角色&#xff0c;英文名称为 Internet Protocol Version 4 Address。每一个连接到互联网上的设备都会被分配一个唯一的IPv4地址&#xff0c;它由32位二进制数以点分十进制的形式呈现出来。在Python编程中&#xff…

chatgpt赋能Python-pythonip地址是否合法

Python中如何判断IP地址是否合法 在网络中&#xff0c;IP地址是非常重要的概念。它用来标识网络中每个设备的唯一地址。IP地址通常分为IPv4和IPv6两种类型。在Python中&#xff0c;有多种方法可以判断IP地址是否合法。在本文中&#xff0c;我们将介绍如何使用Python编程语言来…

可喜可贺,暴雪即将收购第一家工作室Proletariat,魔法吃鸡停运

暴雪娱乐在超过15年的时间里收购了第一家工作室。在VentureBeat的一份报告中&#xff0c;该公司收购了总部位于波士顿的工作室Proletariat。 “经过四年多的元素魔法和咒语组合&#xff0c;我们决定结束Spellbreak的研发&#xff0c;”该公司在其网站上写道。“这些服务器将于2…

修改战网昵称服务器错误,暴雪又改了游戏平台名字 暴雪战网回来了

暴雪一定是个纠结的处女座&#xff0c;距离上一次更改游戏平台名称之后&#xff0c;8月15日早上6点&#xff0c;暴雪中国又一次在微博上发表公告称“暴雪战网品牌名称更新”&#xff0c;名字从上一次的暴雪游戏平台改成了暴雪战网。 按暴雪的意思来看&#xff0c;之所以玩这么一…