在同一架构中部署BIG-IP和NGINX Ingress Controller

NGINX | 2021年11月15日

在之前的系列博客在 Kubernetes 中部署应用服务中,我们探讨了许多客户在数字化转型过程中采用的一种模式。大多数转型之旅都始于传统的应用创建和部署模式(通常是单体应用),由相互隔离的开发团队和运维团队分别负责这两项工作。随着组织转向更现代的模式,他们开始创建基于微服务的应用,并采用 DevOps 实践进行部署,从而淡化传统团队之间的界限。

虽然DevOps团队和应用所有者正更直接地掌控应用的部署、管理和交付方式,但一次性打破所有团队壁垒通常并不现实,我们也认为没有必要这样做。相反,我们发现,合理的职责划分仍然适用:

  • 网络和安全团队继续关注企业基础设施的整体安全性、性能和可用性。他们最关注通常部署在基础设施“入口”处的全局服务。这些团队依靠F5 BIG-IP支持以下用例:全局服务器负载均衡(GSLB)、DNS解析和负载均衡,以及高级流量整形。BIG‑IQ和NGINX Controller[现为F5 NGINX Management Suite]以最适合NetOps团队的形式提供指标和警报;同时为SecOps团队提供其保护组织资产和遵守行业法规所必需的安全可见性和控制能力。
  • 运维团队(侧重运维的DevOps团队)根据相关业务线的需求创建和管理各个应用。他们最关注自动化和CI/CD流水线等服务,这些服务有助于更快地迭代更新后的功能;此类服务通常部署在更“靠近”应用的位置,例如Kubernetes环境中。这些团队依靠NGINX Plus、NGINX App Protect、NGINX Ingress Controller和NGINX Service Mesh等NGINX产品,为托管在包括Kubernetes集群在内的多个环境中的分布式微服务应用提供负载均衡和流量整形。用例包括TLS终止、基于主机的路由、URI重写、JWT身份验证、会话持久性、速率限制、运行状况检查、安全防护(将NGINX App Protect用作集成式WAF)等。

Kubernetes环境中的NetOps和DevOps

NetOps和DevOps团队关注的重点不同,这体现在他们在Kubernetes环境中承担的角色以及履行这些职责所使用的工具上。尽管这种说法可能过于简化,但可以认为,NetOps团队主要关注Kubernetes集群外部的基础设施和网络功能,而DevOps团队主要关注集群内部的这些功能。

为了将流量导入Kubernetes集群,NetOps团队可以使用BIG‑IP作为外部负载均衡器。BIG‑IP支持他们熟悉的各种功能和覆盖网络技术。不过,BIG‑IP本身无法跟踪Kubernetes集群内Pod集合的变化(例如Pod数量或其IP地址的变化)。为解决这一限制,可将F5 Container Ingress Services(CIS)作为Operator部署在集群内。CIS会监控Pod集合的变化,并相应地自动修改BIG‑IP系统负载均衡池中的地址。它还会检测新建的Ingress、Route和自定义资源,并相应地更新BIG‑IP配置。

虽然可以结合使用BIG‑IP和CIS,直接对发往应用Pod的流量进行负载均衡,但在实际应用中,NGINX Ingress Controller更适合发现并及时跟踪Pod和工作负载的动态变化,尤其是涉及大量服务时。例如,为满足不断变化的需求而对应用Pod进行水平扩缩容时。

部署NGINX Ingress Controller的另一个优势是,它将应用负载均衡的控制权交给负责应用本身的DevOps团队。凭借高性能控制平面和以DevOps为中心的设计,它尤其适合支持多个命名空间中Kubernetes服务快速变化的DevOps用例,例如原地重新配置和滚动更新。NGINX Ingress Controller使用原生Kubernetes API发现扩缩容过程中的Pod。

BIG-IP与NGINX Ingress Controller如何协同工作

您可能知道,BIG‑IP和NGINX Ingress Controller最初分别由两家公司(F5和NGINX)设计。F5收购NGINX后,客户向我们反馈,提升这两款工具之间的互操作性有助于简化基础设施管理。为此,我们开发了一种名为IngressLink的新Kubernetes资源。

IngressLink资源是一项简单的增强功能,它使用Kubernetes的自定义资源定义(CRD)将NGINX Ingress Controller与BIG‑IP“连接”起来。简而言之,每当NGINX Ingress Controller Pod集合发生变化时,CIS都能将这一变化“告知”BIG‑IP。BIG‑IP可根据这些信息灵活调整相应的负载均衡策略。

部署BIG‑IP为Kubernetes集群提供负载均衡,并由NGINX Ingress Controller处理入站和出站流量后,流量流向如下:

  1. BIG‑IP将外部流量定向到NGINX Ingress Controller实例。
  2. NGINX Ingress Controller将流量分发到集群内的相应服务。
  3. 由于NGINX Ingress Controller效率出色,一组稳定的实例即可应对应用Pod集合频繁且大幅的变化。但当NGINX Ingress Controller需要横向扩容或缩容(以应对流量激增或下降)时,CIS会通过IngressLink资源将这些变化通知BIG‑IP,使BIG‑IP能够快速适应变化。

F5 BIG-IP和F5 NGINX Ingress Controller通过F5 Container Ingress Services部署在同一Kubernetes环境中的拓扑图

入门指南

如需详细了解IngressLink资源的工作原理并查看部署指南,请访问F5 CloudDocs。

申请30 天免费试用,开始体验集成 NGINX App Protect WAF 和 DoS 的 NGINX Ingress Controller。如果您还不是 BIG‑IP 用户,请在 F5.com 上选择最适合团队的试用方案。


分享

相关博客文章

NGINX Plus R26 正式发布
NGINX | 2022/02/15

NGINX Plus R26 正式发布

NGINX Plus R26通过缓存JSON Web密钥集加快JWT验证,并强化TLS握手,从而提升安全性。NGINX JavaScript的新功能包括增强对异步函数的支持,以及实现WebCrypto API。

使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击
NGINX | 2022/02/10

使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击

gRPC具备开发人员设计和部署现代应用所需的速度与灵活性,但其开放性也使其极易受到第7层DoS攻击。NGINX App Protect DoS可保护gRPC应用免受此类破坏性攻击。

Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划
NGINX | 2021/09/13

Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划

了解选择错误的Ingress控制器可能带来的风险,以及如何从关键方面着手,让您的选择更好地适应未来需求。

NGINX Plus R19 正式发布
NGINX | 2019/09/03

NGINX Plus R19 正式发布

NGINX Plus R19扩展了监控功能,不仅提供更多指标,还新增了指标分析方式;增加试运行模式,用于测试限速效果;增强键值存储,以支持IP地址范围;并使限速更加动态。

NGINX现已正式加入F5
NGINX | 2019/05/09

NGINX现已正式加入F5

NGINX现已正式成为F5的一部分。Gus Robertson现任F5 NGINX业务部门负责人。他阐述了两家公司在人才、文化和愿景方面融合的价值,以及双方将如何携手增强NGINX的开源产品和商业产品。

使用NGINX和NGINX Plus实现高性能缓存
NGINX | 2016/08/24

使用NGINX和NGINX Plus实现高性能缓存

我将介绍NGINX在内容缓存和性能方面的工作原理,并分享一些控制NGINX内容缓存方式的技巧。