浏览 579
原文作者:Dave McAllister - F5 OSS Technologist
原文链接:从 F5 NGINX Ingress Controller 迁移到 F5 NGINX Gateway Fabric
转载来源:NGINX 中文社区
NGINX 唯一中文官方社区 ,尽在 nginx.org.cn

Kubernetes 生态系统正在网络处理方式上经历一次重大变革:从传统的 Ingress API 及 annotation,转向更先进的 Gateway API。这一转变源于现代应用复杂性的持续提升,以及对更精细化流量管理能力的需求。作为应用交付领域的领先者,NGINX 站在这一变革的前沿,同时提供面向当前与未来需求的 F5 NGINX Ingress Controller(NIC),以及面向高级部署的 F5 NGINX Gateway Fabric(NGF)。
多年来,Kubernetes 一直依赖 Ingress controller 来管理外部流量。开源的 NGINX Ingress Controller 因其高性能、可靠性以及丰富的功能集而备受青睐。它在 HTTP/HTTPS 路由、SSL 终止和负载均衡方面表现出色。尽管 NGINX Ingress Controller 持续创新和发展,但 Kubernetes 部署面对日益复杂的流量管理需求,需要新的解决方案。
Gateway API 代表了 Kubernetes 网络体系的一项重大演进,它通过更灵活、可扩展且功能强大的框架解决了 Ingress API 的局限性。围绕这一方向,NGINX 推出了开源的 NGINX Gateway Fabric,作为 Gateway API 的实现方案。
基于开源 NGINX 数据面,NGINX Gateway Fabric 实现了 Kubernetes Gateway API,为 Kubernetes 应用提供统一的连接能力。其原生的基于角色的 API 模型,支持在多租户团队之间实现自助式治理与基础设施层面的权限划分。同时,它允许在混合云或多云 Kubernetes 环境中复用同一套数据面和控制面,并保持两者的逻辑分离,从而提升安全性、灵活性和可靠性。
控制面是基于 controller-runtime 库构建的 Kubernetes 控制器,以 Deployment 的形式运行,用于管理 NGINX 数据面资源。通过监听 Gateway API resource、Service、Endpoint 和 Secret 的变更,它能够自动完成相关资源的创建和配置工作。
NGINX 数据面 Pod 可以以独立的 Deployment 或 DaemonSet 的形式进行部署。每个 Pod 都包含一个 NGINX 容器,该容器同时运行 NGINX 进程以及开源的 NGINX Agent。
下图展示了 NGINX Gateway Fabric 的设计和结构。

不同厂商使用的 annotation 各不相同,因此在 Ingress Controller之间进行迁移具有挑战性。将 Ingress Controller 迁移到类似 NGF 的 Gateway API 也可能面临类似挑战,不过在不同的 Gateway API 实现之间进行迁移则相对容易。
一个很好的起点是 ingress2gateway,这是由 Kubernetes 社区开发的开源项目。作为 Gateway API SIG-Network 的子项目,ingress2gateway 旨在简化从 Kubernetes Ingress 迁移到更灵活的 Kubernetes Gateway API 的过程。该工具能够自动将现有的 Ingress resource(包括许多供应商特定的 annotation 和配置)转换为相应的 Gateway API resource,如 Gateway、GRPCRoute、HTTPRoute 和 BackendTLSPolicy。
F5 NGINX 为 NGINX Kubernetes 项目(NGINX Ingress Controller 和 NGINX Gateway Fabric)创建了一个 provider。具体来说,ingress2gateway 中的 NGINX provider 使得 NGINX Ingress Controller resource 可以转换为 Gateway API resource,以便在 NGINX Gateway Fabric 中部署。
即使您正在使用社区项目 ingress-nginx,一旦通过特定的 provider 完成了向 Gateway API 的迁移,就可以迁移到 NGINX Gateway Fabric。毕竟,Gateway API 的目标之一就是可移植性。
这并不是一个完整的端到端迁移解决方案。您需要手动审核已转换的资源,测试功能,并根据您的具体环境进行必要的额外配置更改。
目前 ingress2gateway 支持的 annotation 包括:
您可以在 GitHub 上的 NGINX provider 仓库中找到更详细的 annotation 列表及其与 Gateway API 的映射。目前一些资源尚不可用,如 virtualServer、VirtualServerRoute 和 transport server,但计划在未来提供支持。
使用带有 NGINX provider 的 ingress2gateway 主要包括两个部分:
使用 ingress2gateway 的优势包括:
即使使用 ingress2gateway 搭配 NGINX provider,迁移到 Gateway API 仍需要谨慎规划。该过程包括以下几个步骤:
ingress2gateway 是一个欢迎贡献的开源项目,尤其是为新的 NGINX Ingress Controller annotation 添加支持。贡献者可以按照仓库提供的指南实现转换逻辑、添加测试并更新文档。
借助 ingress2gateway,组织可以简化向 Gateway API 的过渡,充分利用其灵活性、可扩展性以及高级流量管理能力。对于希望使用 NGINX Ingress Controller 和 NGINX Gateway Fabric 现代化 Kubernetes 网络基础设施的用户而言,该工具是一项重要资产。
从 Ingress Controller 转向 Gateway API 是 Kubernetes 网络演进中的重要一步。NGINX 致力于支持这一过渡,既通过 NGINX Ingress Controller 满足当前需求,也通过 NGINX Gateway Fabric 应对未来需求。借助 ingress2gateway,组织可以简化向 Gateway API 的迁移,充分利用其灵活性、可扩展性以及高级流量管理能力。对于希望使用 NGINX Ingress Controller 和 NGINX Gateway Fabric 现代化 Kubernetes 网络基础设施的用户而言,该工具是一项重要资产。
无论您当前正在使用 NGINX Ingress Controller,还是计划采用 Gateway API,NGINX 都提供所需的工具、支持与创新,帮助您应对这一不断发展的网络环境。随着 Kubernetes 的不断成熟,NGINX 始终是稳健、安全且可扩展应用交付解决方案的可信合作伙伴。
NGINX 唯一中文官方社区 ,尽在 nginx.org.cn
更多 NGINX 相关的技术干货、互动问答、系列课程、活动资源: 开源社区官网 | 微信公众号 | B 站

按点赞数排序
按时间排序
微信公众号
加入微信群