在 Istio 中扩展网关 API 支持
Istio 和更广泛的社区中用于服务网格的标准 API。
今天,我们想祝贺 Kubernetes SIG Network 社区发布网关 API 规范的 Beta 版本。在这个里程碑事件的同时,我们很高兴地宣布,在 Istio Ingress 中使用网关 API 的支持已提升至 Beta 阶段,并且我们打算在未来将网关 API 作为 Istio 所有流量管理的默认 API。我们也激动地欢迎来自服务网格接口 (SMI) 社区的伙伴们,他们加入了我们一项新的努力,即使用网关 API 对服务网格用例进行标准化。
Istio 流量管理 API 的历史
API 设计更像是一门艺术而不是科学,Istio 通常被用作 API 来配置其他 API 的服务!仅在流量路由方面,我们必须考虑生产者与消费者、路由与后路由,以及如何使用正确的对象数量来表达复杂的功能集——考虑到这些对象必须由不同的团队拥有。
当我们在 2017 年推出 Istio 时,我们带来了 Google 生产 API 服务基础设施和 IBM 的 Amalgam8 项目多年的经验,并将其映射到 Kubernetes 上。我们很快遇到了 Kubernetes Ingress API 的局限性。为了支持所有代理实现,Ingress 仅支持最基本的 HTTP 路由功能,其他功能通常以供应商特定的注释形式实现。Ingress API 由基础设施管理员(“创建和配置负载均衡器”)、集群运营商(“为我的整个域管理 TLS 证书”)和应用程序用户(“使用它将 /foo 路由到 foo 服务”)共享。
我们在 2018 年初重写了我们的流量 API以解决用户反馈,并更充分地解决这些问题。
Istio 新模型的主要功能是拥有单独的 API 来描述基础设施(负载均衡器,由网关表示)和应用程序(路由和后路由,由虚拟服务和目标规则表示)。
Ingress 作为不同实现之间的最低公分母运行良好,但其缺点导致 SIG Network 调查“版本 2”的设计。一个2018 年的用户调查之后是2019 年关于新 API 的提案,该提案很大程度上基于 Istio 的流量 API。这项工作被称为“网关 API”。
网关 API 旨在能够模拟更多用例,并具有扩展点以启用不同实现之间功能差异。此外,采用网关 API 使服务网格能够与为支持它而编写的整个软件生态系统兼容。您无需要求您的供应商直接支持 Istio 路由:他们只需要创建网关 API 对象,Istio 就会开箱即用地执行它需要执行的操作。
Istio 中对网关 API 的支持
Istio 在 2020 年 11 月添加了对网关 API 的支持,该支持与 API 实现一起被标记为 Alpha。随着 API 规范的 Beta 版本的发布,我们很高兴地宣布,对 Istio 中 Ingress 用例的支持已提升至 Beta 阶段。我们也鼓励早期采用者开始尝试将网关 API 用于网格(服务到服务)使用,并且当 SIG Network 标准化所需语义时,我们将把该支持提升至 Beta 阶段。
在 API 的 v1 版本发布前后,我们打算使网关 API 成为配置 Istio 中所有流量路由的默认方法——对于 Ingress(南北向)和服务到服务(东西向)。届时,我们将更改我们的文档和示例以反映该建议。
就像 Kubernetes 计划在网关 API 稳定后多年内支持 Ingress API 一样,Istio API(网关、虚拟服务和目标规则)将在可预见的未来继续得到支持。
不仅如此,您还可以继续将现有的 Istio 流量 API 与网关 API 结合使用,例如,将HTTPRoute与 Istio 虚拟服务结合使用。
API 之间的相似性意味着我们将能够提供一个工具来轻松地将 Istio API 对象转换为网关 API 对象,并且我们将在 API 的 v1 版本发布时发布此工具。
Istio 功能的其他部分,包括策略和遥测,将继续使用 Istio 特定的 API 进行配置,同时我们与 SIG Network 合作对这些用例进行标准化。
欢迎 SMI 社区加入网关 API 项目
在网关 API 的设计和实现过程中,Istio 团队成员一直与 SIG Network 的成员合作,确保 API 适用于网格用例。
我们很高兴正式加入这项工作,加入我们的还有来自服务网格接口 (SMI) 社区的成员,包括来自 Linkerd、Consul 和 Open Service Mesh 的领导者,他们共同决定将他们的 API 工作标准化到网关 API 上。为此,我们在网关 API 项目中设立了一个网关 API 网格管理和管理 (GAMMA) 工作流。Istio 技术监督委员会成员兼网络工作组负责人 John Howard 将担任该小组的负责人。
我们的下一步是向网关 API 项目提供增强提案以支持网格用例。我们已经开始研究网格流量管理的 API 语义,并将与在他们的项目中实现网关 API 的供应商和社区合作,建立在标准实现的基础上。之后,我们打算构建授权和身份验证策略的表示。
随着 SIG Network 成为一个供应商中立的论坛,以确保服务网格社区使用相同的语义来实现网关 API,我们期待拥有一个适用于所有项目的标准 API,无论其技术栈或代理如何。