NGINX.COM
Web Server Load Balancing with NGINX Plus

Ingress Controller 选型指南,第四部分:NGINX Ingress Controller 选项

本文是 Kubernetes Ingress Controller 选型指南系列博文中的第四篇。

根据 2020 年云原生计算基金会(CNCF)的调查,NGINX 是 Kubernetes Ingress controllers 中最常用的数据平面——但您知道吗?我们有不止一个“NGINX Ingress Controller”。

本文在 2018 年还有一个版本,标题是 《Wait, which NGINX Ingress Controller for Kubernetes Am I Using?(NGINX Kubernetes Ingress Controller 版本辨析)》。文章的灵感来自与一位社区成员对两个基于 NGINX 的热门 Ingress Controller 的探讨。

I kinda knew about the two different ingress controllers based on the container image locations I’ve seen but I don’t think I’ve seen someone from NGINX outright say it before now.

我们不难理解为什么人们会有困惑(现在仍然如此)。两个 Ingress Controller 都有以下特点:

  • 名称是“NGINX Ingress Controller”
  • 开源
  • 托管在 GitHub 上,具有非常相似的代码库名称
  • 均为在大约同一时间启动的项目的成果

当然,最大的共同点是它们实现了相同的功能。

NGINX 版与 Kubernetes 社区版 Ingress Controller

为了清晰起见,我们这样区分两个版本:

市面上还有一些其他基于 NGINX 的 Ingress Controller,比如 Kong,不过好在它们的名字很好区分。如果您不确定使用的是哪个 NGINX Ingress Controller,可以查看正在运行的 Ingress Controller 的容器镜像,然后将 Docker 镜像名称与上面列出的代码库进行比较。

NGINX Ingress Controller 的目标和优先级

NGINX Ingress Controller 和社区版 Ingress Controller(以及基于 NGINX 开源技术的其他 Ingress Controller)之间的主要区别在于它们的开发和部署模式,而这些模式又基于不同的目标和优先级。

  • 开发理念 – 所有 NGINX 项目和产品的首要任务都是提供一个具有长期稳定性和一致性的快速、轻量级的工具。我们努力避免版本之间有任何现有功能上变化,尤其是那些破坏向后兼容性的现有功能。我们保证您在升级时不会有任何意外“惊喜”。我们也注重可选择性,因此我们的所有解决方案都可以部署在任何平台上,包括裸机、容器、虚拟机以及公有云、私有云和混合云。
  • 集成式代码库 – NGINX Ingress Controller 使用 100% 纯 NGINX 开源代码或 NGINX Plus 实例实施负载均衡,使用仅包含原生 NGINX 功能的最佳实践配置。它不依赖于任何未接受 NGINX 互操作性测试的第三方模块或 Lua 代码。我们的 Ingress Controller 不是利用各种第三方代码库拼凑而成,而是由我们自主开发和维护负载均衡器(即 NGINX 和 NGINX Plus)及 Ingress Controller 软件(基于 Go 语言开发)组成。我们是 NGINX Ingress Controller 所有组件的唯一权威所有者。
  • 高级流量管理 – 标准 Kubernetes Ingress 资源的一大局限性在于,您必须使用注释(annotation)、ConfigMaps 和客户模板等辅助特性来定制它的高级功能。NGINX Ingress Resources 采用了一种原生的、类型安全的、缩进式的配置风格,简化了 Ingress 负载均衡功能的实施,包括 TCP/UDP、断路、A/B 测试、蓝绿部署、HTTP请求头修改、双向 TLS 认证(mTLS)和 Web 应用防火墙 (WAF)。
  • 持续生产就绪性 – 每个版本都按照合理的生产标准构建和维护。无论您使用的是基于 NGINX 开源版还是基于 NGINX Plus 的版本,您都可以从这种“企业级”特性中受益。NGINX 开源版的用户可以在 GitHub 上咨询我们的工程团队,NGINX Plus 订阅用户则可以获得 一流的售后技术支持。无论哪种方式,NGINX 开发人员都将为您效劳!

NGINX 开源版与 NGINX Plus——为什么要升级到我们的商用版?

既然说到这了,我们就来回顾一下基于 NGINX Plus 的 NGINX Ingress Controller 的一些主要优势吧。我们在《Kubernetes Ingress Controller 选型指南,第三部分:开源、默认和商用版本能力对比》中说过,开源和商用版本的 Ingress Controller 之间存在实质性差异。如果您计划在生产环境 Kubernetes 中部署大规模且复杂的应用,那么我们的商用 Ingress Controller 可以帮助您在某些关键领域节省时间和金钱。

安全性与合规性

许多企业和机构未能在生产中交付 Kubernetes 应用的一大原因是难以保障它们的安全性和合规性。基于 NGINX Plus 的 NGINX Ingress Controller 可以从如下五个至关重要的方面保证您的应用和客户安全。

  • 保护边缘 – 在架构合理的 Kubernetes 部署中,对于数据平面流量来说,Ingress Controller 是其流向在 Kubernetes 中运行的服务的唯一入口点。因而 Ingress Controller 是部署 Web 应用防火墙(WAF)的理想位置。NGINX App Protect 集成NGINX Ingress Controller 可保护您的 Kubernetes 应用免受 OWASP 十大风险和许多其他漏洞的侵害,确保 PCI DSS 合规性性能完胜 ModSecurity
  • 集中管理身份验证和授权 – 您可以使用 OpenID Connect(OIDC,构建在 OAuth 2.0 框架之上)和 JSON Web Token(JWT)身份验证在入站点实施身份验证和单点登录(SSO)。
  • 实施端到端加密 – 如果需要保护服务之间的流量,您可以选择使用服务网格。NGINX Service Mesh(始终免费)可以无缝集成 NGINX Ingress Controller,让您以低于其他网格的最小延迟,有效控制入站和出站的 mTLS 流量。
  • 获取及时主动的补丁通知 – 一旦曝出 CVE 漏洞,订阅用户就会收到预警信息,并快速获得补丁。这可以第一时间降低被黑客利用的风险,用户不必再焦急地期盼 GitHub 上的更新,也不必再为了补丁发布而苦等数周甚至数月。
  • 遵循FIPS – 您可以启用 FIPS 模式,确保与 NGINX Plus 通信的客户端使用可信的强密码。

应用性能和弹性

正常运行时间和应用速度通常是开发人员和平台运营团队的关键性能指标(KPI)。基于 NGINX Plus 的 NGINX Ingress Controller 可以从五个至关重要的方面保证您的应用的正常运行时间和速度,帮助您实现 Kubernetes 的承诺。

  • 实时监控 – NGINX Plus 仪表板可显示数百个关键负载和性能指标,帮助您快速找到应用运行缓慢(或宕机!)的原因。
  • 更快地检测和解除故障 – 实施主动检查运行状况的断路器,主动监控 TCP 和 UDP 上游服务器的运行状况。
  • 无需重启即可重新配置 – 相比较开源替代方案,NGINX PLUS提供更快速、无中断重新配置,保证您的应用交付具有稳定的性能和资源使用率,以及更低的延迟
  • 全面测试新功能和部署 – 利用键值存储更改百分比,避免了重新加载,有效简化了 A/B 测试和蓝绿部署的执行。
  • 快速提供支持 – 对于那些等不及社区回答问题或不想承担敏感数据暴露风险的企业和机构来说,保密的商业支持很重要。NGINX 提供了多个层级的支持,涵盖安装、部署、调试和纠错等服务,能够满足您多方面的需求。哪怕只是对某些地方有疑问,您也可以找我们获得帮助。

下一步行动:试用 NGINX Ingress Controller

如果您认为开源 Ingress Controller 对您的应用来说是最好的选择,那么您可以利用我们的 GitHub 代码库快速上手。

如果是大型生产部署,您不妨试试基于 NGINX Plus 的商用 Ingress Controller。我们提供包括 NGINX App Protect 的 30 天免费试用版

Hero image
Microservices: From Design to Deployment

The complete guide to microservices development

Tags

No More Tags to display