BLOG | NGINX

关于 NGINX Kubernetes Gateway,你需要知道的 5 件事

NGINX-Part-of-F5-horiz-black-type-RGB
Ilya Krutov 缩略图
Ilya Krutov
Published April 12, 2022

在过去的几年里,F5 NGINX 帮助您成功走完了 Kubernetes 之旅,而今 F5 NGINX 又创造了新的里程碑 —— 我们发布了 NGINX 家族最新成员的内测版:F5 NGINX Kubernetes Gateway!

NGINX Kubernetes Gateway 是一个按照“Kubernetes Gateway API 规范”来执行的控制器,该规范是从 “Kubernetes Ingress API 规范”演变而来的。Gateway API 是由 Kubernetes 网络特别兴趣小组 (SIG‑NETWORK) 管理的开源项目,旨在改善 Kubernetes 的服务网络并实现其标准化。NGINX 是该项目的积极贡献者。

如果您目前正积极使用 Kubernetes,那么 Ingress API 对象和许多可用的 Ingress 实施对您来说一定不陌生。Gateway API 是暴露 Kubernetes 应用和 API 的最新方法。如欲了解有关当前其他可用选项的更多信息,请参阅《Kubernetes 网络入门》

近几年来,随着越来越多的企业跨各种混合云和多云环境在生产级 Kubernetes 集群中部署 Ingress controller,他们逐渐认识了使用 Gateway API 来解决各项挑战的必要性:

  • 其中一个挑战是,最初的 Ingress 资源在设计时只考虑了一个用户角色,即监督整个配置的 Kubernetes 运维人员或管理员。这种模型在许多拥有多个团队的企业中都不适用,包括应用开发人员、平台运维人员、安全管理员等,他们在协作开发和交付应用的过程中需要控制 Ingress 配置的不同方面。Gateway API用了新的模式,并使其能够轻松地委托多个角色对网络配置进行控制。

  • 另一个挑战是许多 Ingress 实施中的注释和自定义资源类型 (CRD) 激增,它们解锁了不同数据平面的功能,并实现了 Ingress 资源中没有内置的功能,例如基于标头的匹配、流量加权和多协议支持。Gateway API 可将此类功能作为核心 API 标准的一部分来进行提供。

 

NGINX Kubernetes Gateway 是什么?

NGINX Kubernetes Gateway 由 Ingress controller 发展而来,它解决了现代客户环境中多个团队管理 Kubernetes 基础架构的难题。此外,它还提供了许多无需实施 CRD 就可以实现的功能,简化了部署和管理流程。NGINX Kubernetes Gateway 利用经过验证的 NGINX 技术作为其数据平面,能够提供一流的性能、可视性和安全性。

NGINX Kubernetes Gateway 通过将基于角色的访问控制 (RBAC) 映射到相关角色(基础架构提供商、集群操作员和应用开发人员),对三个主要的 Gateway API 资源(GatewayClass、Gateway 和 Route)进行了标准化。

明确定义并划分不同角色的职责范围有助于简化管理。具体来说,基础架构提供商负责为 Kubernetes 集群定义 GatewayClasses,集群运维人员则负责在集群中部署和配置 Gateway(包括策略),而应用开发人员可以自由地将 Route 附加到 Gateway,以对外暴露应用。

此外,NGINX Kubernetes Gateway 通过对大多数用例的内置核心功能进行标准化处理,简化了 Kubernetes 环境中服务网络的部署和管理,从而减少了对 CRD 的需求。NGINX Kubernetes Gateway 内测版实施主要通过七层(HTTP 和 HTTPS)路由交付 Ingress controller 功能。未来的功能发展将受社区反馈和用例的驱动,包括四层路由功能。根据 Gateway API 和 NGINX Kubernetes Gateway 的长期路线图,它们最终将交付由 Ingress controller 提供的功能超集。

 

NGINX Kubernetes Gateway 与 NGINX Ingress Controller 有何不同?

F5 NGINX Ingress Controller 通过实施 Ingress API 规范来提供核心功能,并且使用自定义注释、CRD 和 NGINX Ingress 资源提供扩展功能。NGINX Kubernetes Gateway 遵守 Gateway API 规范,能够在简化实施的同时,更好地与处理服务网络配置的组织角色对齐。

下表比较了标准 Ingress API、带 CRD 的 NGINX Ingress Controller 和 Gateway API 的关键高级特性,描述了它们各自的功能。

特性标准 Ingress API带 CRD 的 NGINX Ingress ControllerGateway API
API 规范Ingress APIIngress API + CRDGateway API
多用户管理
七层协议(HTTP/HTTPS、gRPC)
七层负载均衡自定义策略
请求路由
请求操作有限
响应操作有限
四层协议(TLS、TCP、UDP)
四层负载均衡自定义策略
放行/阻断列表自定义策略
证书验证自定义策略
身份验证 (OIDC)自定义策略
速率限制自定义策略

 

NGINX Kubernetes Gateway 是否会取代 NGINX Ingress Controller?

NGINX Kubernetes Gateway 不会取代 NGINX Ingress Controller。更确切地说,它是一种基于 Gateway API 规范内测版的新兴技术,仅用于进行评估, 并不适用于生产环境。NGINX Ingress Controller 则是一种成熟、稳定、适用于生产环境并广为客户所用的技术。它可以通过自定义注释和 CRD 针对特定用例量身定制。举例来说,NGINX Ingress Controller 需要使用 NGINX Ingress 资源(包括 VirtualServer、VirtualServerRoute、TransportServer 和 Policy )来实施基于角色的方法。

我们认为,NGINX Kubernetes Gateway 短期内不会取代 NGINX Ingress Controller —— 如果真要取代也是几年之后的事情了。NGINX Ingress Controller 将继续为各种环境和用例中的南北向网络流量管理发挥着重要作用,包括负载均衡、流量限制、流量分割和安全防护。

 

NGINX Kubernetes Gateway 是一种 API 网关吗?

从名称上看,“Gateway API(网关 API)”听起来像是“API 网关”,但事实并非如此。正如我们在《API 网关 vs. Ingress Controller vs. Service Mesh该怎么选?》中讨论的那样,“API 网关”描述了一组可以通过不同类型的代理(ADC 或负载均衡器和反向代理最为常见,Ingress Controller 和 Service Mesh 日渐兴起)实现的用例。也就是说,就像 NGINX Ingress Controller 一样,NGINX Kubernetes Gateway 可用于 API 网关用例,包括将请求路由到特定的微服务、实施流量策略及支持灰度和蓝绿部署。其内测版主要用于处理 HTTP/HTTPS 流量,未来计划还将支持更多协议和用例。

 

立即开始使用

准备好评估这项令人兴奋的新技术了吗?获取 NGINX Kubernetes Gateway 的内测版

有关部署说明,请参阅 README 文件。

有关 Gateway API 规范的详细信息,请参阅 Kubernetes Gateway API 文档

欢迎您积极提交反馈、功能请求、用例及任何其他建议,以便我们帮助您化解挑战并取得成功。请在我们的 GitHub 仓库中分享您的反馈。


"This blog post may reference products that are no longer available and/or no longer supported. For the most current information about available F5 NGINX products and solutions, explore our NGINX product family. NGINX is now part of F5. All previous NGINX.com links will redirect to similar NGINX content on F5.com."