点赞
评论
收藏
分享
举报
Ingress Controller 选型指南,第四部分:NGINX Ingress Controller 选项
原文作者:Jenn Gile - Manager, Product Marketing
原文链接:Ingress Controller 选型指南,第四部分:NGINX Ingress Controller 选项
转载来源:NGINX 中文官网

NGINX 唯一中文官方社区 ,尽在 nginx.org.cn



 

编者按 —— 本文是以下系列博文中的一篇(共十篇):

  1. 生产级 Kubernetes 助您降低复杂性
  2. 如何通过高级流量管理提高 Kubernetes 的弹性
  3. 如何提高 Kubernetes 环境的可视性
  4. 使用流量管理工具保护 Kubernetes 的六种方法
  5. Ingress Controller 选型指南,第一部分:确定需求
  6. Ingress Controller 选型指南,第二部分:评估风险和技术前瞻性
  7. Ingress Controller 选型指南,第三部分:开源、默认和商用版本能力对比
  8. Ingress Controller 选型指南,第四部分:NGINX Ingress Controller 选项(本文)
  9. 如何选择 Service Mesh
  10. NGINX Ingress Controller 在动态 Kubernetes 云环境中的性能测试


您还可以免费下载整套博文集结成的电子书:《Kubernetes:从测试到生产》


根据 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 的探讨。




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

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


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

 

NGINX 版与 Kubernetes 社区版 Ingress Controller

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

  • 社区版 —— 社区版 Ingress Controller 以 NGINX 开源技术为基础(文档参见 Kubernetes.io),可在 GitHub 的 kubernetes/ingress-nginx 代码库中找到。它由 Kubernetes 社区维护,并且 F5 NGINX 承诺帮助管理该项目。
  • NGINX 版本 —— NGINX Ingress Controller 由 F5 NGINX 开发和维护(文档见 docs.nginx.com),可在 GitHub 的 nginxinc/kubernetes-ingress 代码库中找到。它有两个版本:
      • 基于 NGINX 开源技术(开放的开源版本)
      • 基于 NGINX Plus(商用版本)

市面上还有一些其他基于 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 通信的客户端使用可信的强密码。

阅读《NGINX 助力奥迪进行应用创新,打造面向未来的技术愿景》,了解德国汽车巨头奥迪是如何保护他们的红帽 OpenShift 应用的。

 

应用性能和弹性

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



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

阅读《借助 NGINX 增强亚马逊 EKS 的安全性和流量可视性》,了解商务短信公司 Zipwhip 是如何实现 SaaS 应用 99.99% 的正常运行时间的。



下一步行动:试用 NGINX Ingress Controller

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



 

NGINX 唯一中文官方社区 ,尽在 nginx.org.cn

更多 NGINX 相关的技术干货、互动问答、系列课程、活动资源: 开源社区官网 | 微信公众号



已修改于2023-11-10 12:48
本作品系原创
创作不易,留下一份鼓励
NGINX官方账号

暂无个人介绍

关注



写下您的评论
发表评论
全部评论(0)

按点赞数排序

按时间排序

关于作者
NGINX官方账号
这家伙很懒还未留下介绍~
233
文章
21
问答
198
粉丝
相关文章
NGINX开源版本和商用版本的差异化对比 先从官方的对比图讲起: 其中NGINXPLUS一栏代表当前商用版本的功能/场景支持列表,NGINXOSS一栏代表社区开源版本的功能支持列表。 再从NGINX模块增强角度的对比图讲起: 其中新增的商业版本模块,是在原来开源模块基础上额外具备的,简单地说是商业版本独有的;其次,开源模块的增强部分,在商业版本里相比传统的开源模块,又做了些许优化与提升。 出处引用:https://www.nginx.com/products/nginx/#compare-versions 最后从NGINXController角度和社区开源版本的行业定制的对比图说起: 某行业基于开源版本的定制化视图: NGINX官方部分摘录: 从这一系列的结构介绍里可以看出,NGINXController对部署的要求及NGINX服务的纳管情况,简单地说提供一个平台工具来定位用了哪些NGINX服务,NGINX服务的进程情况如何,NGINX相关监控指标运行情况等,相比某行业基于开源版的定制,一个是追求原味的呈现,另一个是更贴近客
点赞 1
浏览 1.3k
Ingress Controller 可以成为 Kubernetes 堆栈中最强大的工具之一。请了解如何确定 Ingress 需求,以便您能选择最佳选项。访问 NGINX 中文官方开源社区(nginx.org.cn)了解详情。
点赞 0
浏览 1.6k
请了解选择错误的 Ingress Controller 可能带来的风险,以及您可以前瞻性地选择的几个关键领域。访问 NGINX 中文官方开源社区(nginx.org.cn)了解详情。
点赞 0
浏览 1.5k