博客 | NGINX

选择入口控制器的指南,第 3 部分: 开源与…… 默认与…… 商业的

NGINX-F5-horiz-black-type-RGB 的一部分
Jenn Gile 缩略图
詹妮弗·吉尔
2021 年 9 月 20 日发布

编辑– 这篇文章是10 篇系列文章的一部分:

  1. 使用生产级 Kubernetes 降低复杂性
  2. 如何通过高级流量管理提高 Kubernetes 的弹性
  3. 如何提高 Kubernetes 中的可见性
  4. 使用流量管理工具保护 Kubernetes 的六种方法
  5. 选择入口控制器的指南,第 1 部分: 确定您的需求
  6. 选择入口控制器的指南,第 2 部分: 风险与未来保障
  7. 选择入口控制器的指南,第 3 部分: 开源与…… 默认与…… 商业(本帖)
  8. 选择入口控制器的指南,第 4 部分: NGINX 入口控制器选项
  9. 如何选择服务网格
  10. 在动态 Kubernetes 云环境中对 NGINX Ingress 控制器进行性能测试

您还可以下载完整的博客作为免费的电子书 -将 Kubernetes 从测试带到生产

恭喜! 阅读完我们选择Ingress 控制器的指南的前两部分后,您几乎就可以选择一个了。 让我们回顾一下迄今为止的情况:

  • 第 1 部分中,我们讨论如何确定您的需求,包括性能、预算、用例、架构和所有权。
  • 第 2 部分中,我们讨论了选择错误的 Ingress 控制器可能带来的风险,并概述了可以为未来选择提供保障的关键领域。

Ingress 控制器分为三类:开源、默认和商业。 每种方法都有其用途,在做出选择之前,明确您的短期和长期需求非常重要。 在这篇博客中,我们介绍了每个类别的优缺点。

开源 Ingress 控制器

许多开源 Ingress 控制器由用户和志愿开发人员社区维护,但有些也有专门的工程团队。 两个最流行的开源 Ingress 控制器基于 NGINX – 一个由 Kubernetes 社区维护,另一个由核心 NGINX 工程团队领导并开源。 有关基于 NGINX 的 Ingress Controller 的进一步比较,请参阅第 4 部分我们的系列。

  • 优点:
    • 免费和社区驱动——许多人和组织选择开源项目不仅是因为其无与伦比的价格(免费!),还因为他们更喜欢社区开发的技术。
    • 功能速度– 这些 Ingress 控制器更有可能处于功能创新的前沿。
  • 缺点(与一般开源项目相同)
    • 成本(时间) ——它们缺乏用于轻松设置和扩展的“开箱即用”工具,因此您最终需要花时间进行定制和解决您的特定需求。
    • 有风险——可能存在稳定性、安全性和可靠性问题(由于强调功能速度和贡献者的志愿性质)。 常见漏洞和暴露 (CVE) 的补丁可能永远不会出现,或者可能在 CVE 公开披露数月后才出现,这会给黑客足够的时间来攻击您的 Ingress 控制器。
    • 极少或没有支持——大多数都是“自行解决”……只有你和文档。 如果您遇到自己无法解决的问题,那么获得帮助可能会很困难(或不可能)——您唯一的选择就是将您的问题发布在社区论坛上,并希望社区的其他成员 (a) 能够回应并且 (b) 知道解决方案。
  • 概括: 当组织首次开始尝试使用 Kubernetes 时,他们通常会选择开源 Ingress 控制器,因为这样比较方便,或者因为文档承诺您可以免费快速启动并运行。 当您开始、测试或进行小批量生产时,它可以发挥很好的作用。

默认入口控制器

尽管许多默认 Ingress 控制器都基于开源技术,但我们将它们单独分类,因为它们是由提供完整 Kubernetes 平台(并且通常支持管理)的公司开发和维护的。 此类别的示例包括公共云 Ingress 控制器、Rancher 和 Red Hat OpenShift 路由器。

  • 优点:
    • 免费或低成本——低廉的价格是使用这些产品的令人信服的理由。 它们已经集成到平台中,当您刚开始时,这确实可以节省时间。
    • 可靠且有支持——由于它们由专门的工程团队维护,因此它们可能比社区维护的 Ingress 控制器更可靠。 商业支持通常包含在内或需要额外付费。
  • 缺点:
    • 基础设施锁定——默认入口控制器与基础设施无关,因此您无法将它们或您的配置从一个云转移到另一个云。 这意味着每个部署环境都需要不同的 Ingress 控制器,这会导致工具蔓延、增加团队的学习曲线,并使 Ingress 控制器的保护更加困难。
    • 基本功能——它们通常缺乏大规模部署所需的高级流量管理和安全功能。
    • 不可预测的成本(时间和金钱) ——虽然初始成本为零或很低,但随着应用的增长,成本可能会急剧且不可预测地增加。 这可能表现为需要花费时间来将 Ingress 控制器的最小功能集所缺少的功能构建到您的应用中 — 当然,每次更新应用时您都必须对该功能进行回归测试。某些默认工具的另一个缺点是,随着您的应用越来越受欢迎,您的云账单会大幅增加,这是因为吞吐量费用乍一看似乎无害。
  • 概括: 对于刚接触 Kubernetes 并使用托管平台(例如 Amazon Elastic Kubernetes Service (EKS)、 Google Kubernetes Engine (GKE)、Microsoft Azure Kubernetes Service (AKS)、 RancherRed Hat OpenShift Container Platform )的团队来说,默认 Ingress 控制器是一个受欢迎的选择。 随着应用程序的成熟和团队的壮大,组织通常选择在其堆栈中添加企业级 Ingress 控制器,而不是替换默认工具。

商业入口控制器

这些 Ingress 控制器是获得许可的产品,旨在支持大规模生产部署。 一个例子是基于 NGINX PlusF5 NGINX Ingress Controller版本,我们将在第 4 部分中进一步讨论。

  • 优点:
    • 大型功能集- 商业入口控制器包括强大的功能集,支持高级流量管理和大型部署的可扩展性。 可能与其他生产级产品集成,例如 WAF 或服务网格。
    • 可扩展——组织通常发现这些选项可以节省时间,因为它们往往具有更多“开箱即用”的功能,不需要定制或解决方法。 它们可以轻松添加到自动化管道中,以允许您的基础设施根据需要增长。
    • 可靠且有支持——商业产品的主要优点之一是它们很稳定,这意味着每次发布时都会经过广泛的测试,并根据需要定期进行软件更新和安全补丁。 全面的商业支持通常分为多个层级,因此您通常可以在遇到关键问题后几分钟或几小时内获得保密帮助。
  • 缺点:
    • 开发速度较慢——由于稳定性对于商业 Ingress 控制器来说非常重要,因此它们的功能速度可能会比开源控制器稍微落后一些。
    • 成本(金钱) ——商业产品的现实情况是它们需要花钱。 对于开发周期多于现金的组织来说,在这种情况发生改变之前,成本可能是一个交易障碍。
  • 概括: 随着组织规模的扩大,根据团队和应用程序的复杂性,Ingress 控制器的选择变得更加重要。 一旦组织达到高度复杂度,商业 Ingress 控制器就变得有意义了,因为它可以降低管理复杂性并加快新产品功能的上市时间。

下一步: 评估选项

在旅程的这个阶段,您已准备好通过消除无法满足您需求的选项来尝试一些 Ingress 控制器。 开始高级功能比较的一个好地方是learnk8s ,它提供了他们评估过的 Ingress 控制器的免费比较表

在研究 Ingress 控制器时,您可能会注意到许多选项都基于 NGINX。有关基于 NGINX 的选择的概述,请查看本系列的最后一篇博客《 Ingress 控制器选择指南,第 4 部分》: NGINX Ingress Controller 选项,即将推出。


“这篇博文可能引用了不再可用和/或不再支持的产品。 有关 F5 NGINX 产品和解决方案的最新信息,请探索我们的NGINX 产品系列。 NGINX 现在是 F5 的一部分。 所有之前的 NGINX.com 链接都将重定向至 F5.com 上的类似 NGINX 内容。”