Kubernetes Gateway API V1.0:您应该切换吗?

自Kubernetes Gateway API 发布 v1.0以来已经过去两个多月了,这标志着其一些关键 API 已经进入普遍可用状态。

去年,当网关 API升级为测试版时,我曾写过有关该 API的文章,但一年后,问题仍然存在。您是否应该从 Ingress API 切换到 Gateway API?

我去年的回答是你不应该。我有充分的理由。

Gateway API 及其实现仍处于起步阶段。另一方面,Ingress API 很稳定,涵盖了一些可能适合大多数用户的主要用例。

对于需要更多功能的用户,我建议通过权衡可移植性(在不同 Ingress 实现之间切换)来使用 Ingress 控制器提供的自定义资源。

随着 v1.0 版本的发布,这种情况可能会改变。Gateway API 现在功能更加强大,其20 多个实现正在迅速赶上。

因此,如果您重新开始并在 Ingress 和 Gateway API 之间进行选择,如果您选择的 API 和实现支持您想要的所有功能,我建议您选择 Gateway API。

Ingress API 出了什么问题?

Ingress API工作得很好,但仅适用于一小部分常见用例。为了扩展其功能,Ingress 实现开始使用自定义注释。

例如,如果您选择 Nginx Ingress,那么如果您决定切换到Apache APISIX等其他 Ingress 实现,您将使用其数十个不可移植的注释中的一些注释。

这些特定于实现的注释管理起来也很麻烦,并且违背了以 Kubernetes 原生方式管理 Ingress 的目的。

最终,Ingress 控制器实现开始开发其 CRD,以向 Kubernetes 用户公开更多功能。这些 CRD 特定于 Ingress 控制器。但如果您可以牺牲便携性并坚持使用一个 Ingress 控制器,那么 CRD 会更易于使用并提供更多功能。

Gateway API 旨在通过提供 Ingress API 的供应商不可知性和 CRD 的灵活性来一劳永逸地解决这个问题。它处于非常有利的位置来实现这一目标。

从长远来看,Ingress API预计不会获得任何新功能,并且将尽一切努力与Gateway API融合。因此,当您无意中触及 Ingress API 的功能限制时,采用 Ingress API 可能会导致问题。

明显的好处

富有表现力、可扩展和面向角色是塑造 Gateway API 开发的关键思想。

与 Ingress API 不同,Gateway API 是多个 API(HTTPRoute、Gateway、GatewayClass 等)的集合,每个 API 满足不同的组织角色。

例如,应用程序开发人员只需要关心 HTTPRoute 资源,他们可以在其中定义路由流量的规则。他们可以将集群级别的详细信息委托给管理集群的操作员,并确保它使用网关资源满足开发人员的需求。

网关API

这种面向角色的API 设计允许不同的人在保持控制的同时使用集群。

Gateway API 的功能也比 Ingress API 强大得多。Gateway API 开箱即用地支持 Ingress API 中需要注释的功能。

官方扩展

尽管 Gateway API 是官方的 Kubernetes API,但它是作为一组 CRD 实现的。

这与使用默认的 Kubernetes 资源没有什么不同。但你只需像安装官方扩展一样安装这些 CRD即可。

APISIX 的网关 API 支持


Ingress 控制器将 Kubernetes 资源转换为 API 网关实现的 APISIX 配置。

与缓慢走向长期稳定的 Kubernetes 相比,这允许快速迭代。

它会扩散吗?

正如这位著名的 XKCD 漫画经常提醒我们的那样,标准往往会激增。

在 Ingress 和 Gateway API 中可以看到这样的一个版本。通常是这样的:

  1. 出现了一个标准来统一不同的项目/它们的标准(Kubernetes Ingress API)。
  2. 统一标准存在实施者想要克服的局限性(Ingress API 受到限制)。
  3. 由于这些限制(自定义 CRD、注释),实现与标准有所不同。
  4. 现在每个实现都有其标准(不可移植的 CRD、注释)。
  5. 一个新标准的出现来统一这些不同的标准(Kubernetes Gateway API)。

有理由认为 Gateway API 可能不是这里的最终游戏。但我相信它完全有可能成为 Kubernetes 中路由的标准。

再说一次,我有我强有力的理由。

广泛采用对于防止标准扩散至关重要,因为实施不同标准的动力较少。Gateway API 已经有超过 25 个实现。

实现可以在不同级别上符合网关 API:

  1. 核心:所有实现都应符合这些要求。
  2. 扩展:这些可能仅在某些实现中可用,但它们是标准 API。
  3. 特定于实现:特定于实现,但通过标准扩展点添加。

随着越来越多的实现支持这些功能,利基功能可以从特定于实现转移到扩展至核心。即,API 为自定义扩展留有空间,同时确保其遵循标准。

服务网格接口 (SMI)项目是一个类似的尝试,旨在标准化 Kubernetes 中的服务网格配置。然而,在服务网格项目最初参与之后,该项目几乎没有受到关注,并慢慢消亡。

SMI 不支持用户期望在服务网格中使用的许多共同特性。它的发展速度也不够快,无法支持这些功能。最终,服务网格实现在遵守 SMI 方面落后了(我曾经在CNCF TAG 网络下与 SMI 密切合作,从事一个报告 SMI 一致性的项目)。

这些都是普遍原因,但该项目现在正在通过 Gateway API 复活。用于网格管理和管理的网关 API (GAMMA) 计划旨在扩展网关 API 以与服务网格配合使用。

SMI 项目最近与 GAMMA 计划合并,这对于网关 API 来说非常好。Istio 无疑是最受欢迎的服务网格,它也宣布 Gateway API 将成为未来管理 Istio 的默认 API。这种收养可以防止扩散。

迁移指南

网关API 文档提供了有关将 Ingress 资源迁移到网关资源的全面指南。我们不再重述,而是尝试使用ingress2gateway工具将我们的 Ingress 资源转换为相应的 Gateway API 资源。

您可以直接从发布页面下载并安装适用于您的操作系统的二进制文件。

我们来看一个简单的 Ingress 资源:​

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: httpbin-route
spec:ingressClassName: apisixrules:- host: local.httpbin.orghttp:paths:- backend:service:name: httpbinport:number: 80path: /pathType: Prefix
这会将具有提供的主机地址的所有流量路由到该httpbin服务。

要将其转换为网关 API 资源,我们可以运行:

ingress2gateway print --input_file=ingress.yaml
该网关 API 资源如下所示:
apiVersion: gateway.networking.k8s.io/v1alpha2
kind: HTTPRoute
metadata:name: httpbin-route
spec:hostnames:- local.httpbin.orgrules:- matches:- path:type: PathPrefixvalue: /backendRefs:- name: httpbinport: 80

可行的替代方案

在 Kubernetes 中配置网关还有其他可行的替代方案。

在 Apache APISIX 中,您可以以独立模式部署它并在 YAML 文件中定义路由配置。您可以通过传统工作流程更新此 YAML 文件,在不需要通过 Kubernetes API 管理网关配置的场景中,它非常有用。

如果您不打算切换到不同的解决方案或者您的配置足够小以便可以轻松迁移,则特定于实现的自定义 CRD 也是可行的替代方案。

无论如何,网关 API 将继续存在。


作者:Navendu Pottekkat ​

更多技术干货请关注公号【云原生数据库

squids.cn,云数据库RDS,迁移工具DBMotion,云备份DBTwin等数据库生态工具。

irds.cn,多数据库管理平台(私有云)。

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

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

相关文章

理德外汇:通胀风险下降,2024年适合降息

新近公布的会议纪要显示,上月的货币政策会议上,美联储决策者对遏制住高通(137.6, -2.63, -1.88%)胀显得更有信心,认为通胀上行的风险削减,预计未来一年可能适合降息,不过,利率路径还很不确定。 美联储货币政…

数据结构OJ实验11-拓扑排序与最短路径

A. DS图—图的最短路径(无框架) 题目描述 给出一个图的邻接矩阵,输入顶点v,用迪杰斯特拉算法求顶点v到其它顶点的最短路径。 输入 第一行输入t,表示有t个测试实例 第二行输入顶点数n和n个顶点信息 第三行起&…

自由DIY预约小程序源码系统:适用于任何行业+自由DIY你的界面布局+全新升级的UI+多用户系统 带安装部署教程

随着移动互联网的普及,预约服务逐渐成为人们日常生活的一部分。从家政服务、医疗挂号到汽车保养,预约已经渗透到各个行业。然而,市面上的预约小程序大多功能单一,界面老旧,无法满足商家和用户的个性化需求。今天来给大…

ipvsadm命令详解

ipvsadm命令详解 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨一个在Linux系统网络管理中极具威力的命令——ipvsadm,通过详细解析…

整合【事务】

目录 1、读未提交(脏读) 2、读已提交(不可重复读) 3、可重复读(幻读) 4、Navicat中模拟开启、提交、回滚事务 1、读未提交(脏读) 允许一个事务读取其他事务未提交的修改 2、读已…

异步优势演员-评论家算法 A3C

异步优势演员-评论家算法 A3C 异步优势演员-评论家算法 A3C网络结构并行步骤 异步优势演员-评论家算法 A3C A3C 在 A2C 基础上,增加了并行训练(异步)来提高效率。 网络结构 A2C: A3C: 在这两张图之间,…

UI自动化Selenium 页面窗口window定位切换

Selenium自动化,在操作元素时,一定是基于某个窗口这个前提;我们时常在操作时会出现打开新窗口的情况;如点击新增按钮,打开了新增单据的新页面窗口,接下来要录入单据信息时,必须告诉框架切换到新…

安装cnpm报4048错误

记一次安装cnpm报错: 默认安装的是最新版本的cnpm,可能跟现有的npm不匹配。指定一个低版本的cnpm,或者升级npm到最新版本。 #指定一个cnpm的版本,这里是7.1.1 npm install -g cnpm7.1.1 --registryhttps://registry.npm.taobao…

【C程序设计】C循环

有的时候,我们可能需要多次执行同一块代码。一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。 编程语言提供了更为复杂执行路径的多种控制结构。 循环语句允许我们多次执行一个…

【C语言进阶篇】关于指针的八个经典笔试题(图文详解)

🎬 鸽芷咕:个人主页 🔥 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 📋 前言💬 指针笔试题💭 笔试题 1:✅ 代码解析⁉️ 检验结果&…

linux系统正则表达式和grep过滤编辑器

正则和grep过滤 正则表达式正则表达式基本元字符正则表达式扩展元字符判断使用正则过滤使用扩展元字符正则 语法实例常用的正则表达式校验数字的表达式校验字符的表达式特殊需求表达式钱的输入格式: grep过滤编辑器返回值参数 正则表达式 正则表达式(Regular Expres…

听GPT 讲Rust源代码--compiler(5)

File: rust/compiler/rustc_resolve/src/rustdoc.rs rust/compiler/rustc_resolve/src/rustdoc.rs是Rust编译器中解析文档注释的模块。该模块处理Rust源代码中的文档注释,提取出有用的信息,例如函数、结构体、枚举的名称、说明、参数、返回值等。它的主要…

羊大师讲解喝羊奶的好处多,降低脂肪风险还有不少!

羊大师讲解喝羊奶的好处多,降低脂肪风险还有不少! 喝羊奶是一种非常健康的饮品,具有许多好处。相比于牛奶,羊奶含有更多的维生素和矿物质,对身体更有益。喝羊奶可以减少脂肪摄入,有助于降低患心血管疾病的…

基于Vue的宿舍管理系统

基于Vue的宿舍管理系统资源-CSDN文库 基于 Koa 以及 VueJS 的宿舍管理系统。 新增功能: 【楼层管理】添加『入住人员信息』模块,显示入住学生、性别、院系、专业的人数,可用饼图表示【用户信息】学生用户添加性别、院系、专业字段【楼层管理…

Gamebryo游戏引擎源码(gb2.6+gb3.2+gb4.0+中文手册)

Gamebryo游戏引擎源码,是源码,是源码,是源码。喜欢研究游戏的可以下载研究研究,代码写得很好,有很多借得参考的地方。 Gamebryo游戏引擎源码(gb2.6gb3.2gb4.0中文手册) 下载地址: 链…

rollup 插件开发示例

✨专栏介绍 Rollup专栏是一个专门介绍Rollup打包工具的系列文章。Rollup是一个现代化的JavaScript模块打包工具,它可以将多个模块打包成一个或多个文件,以提高应用程序的性能和加载速度。 在Rollup专栏中,您将学习到如何安装和配置Rollup&a…

专车数据层架构进化往事:好的架构是进化来的,不是设计来的

很多年前,读了子柳老师的《淘宝技术这十年》。这本书成为了我的架构启蒙书,书中的一句话像种子一样深埋在我的脑海里:“好的架构是进化来的,不是设计来的”。 2015 年,我加入神州专车订单研发团队,亲历了专…

将DOM结构转换成图片保存至本地或保存至剪切板

在新业务需求中,碰到这样一个场景,需要将后端返回的表格数据,保存至本地或者保存至剪切板,直接发送给用户使用。 1. 将内容转换成图片并保存至本地 1.1 交互效果 如图所示,想要点击复制按钮后,将下面这个…

office学习记录

目录 Excelwordvisioonedriveproject学习资料git仓库百度云分享 视频教程官网资料 Excel word visio onedrive project 学习资料 git仓库 office学习笔记: https://gitee.com/fedorayang/office.git 百度云分享 安装程序: office2019 project2019 visio2019 书籍: Ac…

Talk | 香港科技大学博士生陈竞晔:TextDiffuser系列让扩散模型渲染文本不再是难题

本期为TechBeat人工智能社区第560期线上Talk。 北京时间1月3日(周三)20:00,香港科技大学在读博士生—陈竞晔的Talk已准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “TextDiffuser系列让扩散模型渲染文本不再是难题”,介绍了他的团…