NGINX Full Version

借助 BGP 走进集群?

如欲创建和管理一个强大的 Kubernetes 环境,您的网络团队和应用团队之间必须能够顺畅协作。然而,他们的工作重点和工作方式往往大径相庭,这可能会引发冲突,进而造成严重后果——应用开发速度缓慢、部署延迟乃至网络中断。

两个团队必须都朝着共同的目标努力,才能确保如今的现代应用按时交付,并具有适当的安全防护和可扩展性。但如何充分发挥每个团队的技能和专长,同时帮助他们协同工作呢?

我们的白皮书《走进集群》详细介绍了一款 Kubernetes 服务外部访问解决方案,可助力网络团队和应用团队优势互补,避免冲突。

 

如何在 Kubernetes 集群中暴露应用

该解决方案特别适合托管在本地的 Kubernetes 集群,凭借着节点(node)在裸机或传统 Linux 虚拟机 (VM) 上运行,并且标准的二层交换机和三层路由器为数据中心内的通信提供网络。它不会扩展到云托管的 Kubernetes 集群,因为云提供商不允许我们控制其数据中心内的核心网络及其托管 Kubernetes 环境中的网络。

在详细介绍我们的解决方案之前,先让我们看一下为什么在 Kubernetes 集群中暴露应用的其他标准方法不适用于本地部署:

 

支持外部用户访问本地 Kubernetes 集群

说到这里,首先想到便是 Kubernetes Ingress 对象,它专为从集群外的用户流向集群内的 pod 的流量(南北向流量)而设计。Ingress 为集群创建了一个外部 HTTP/HTTPS 入口点,即单个 IP 地址或 DNS 名称,支持外部用户访问多个 service。这恰好能满足我们的需求!“Ingress 对象”由 Ingress controller 实现——在我们的解决方案中是基于 NGINX Plus 的企业级 F5 NGINX Ingress Controller

您可能会惊讶地发现,该解决方案的另一个关键组件是边界网关协议 (BGP),后者是一种三层路由协议。出色的解决方案不一定很复杂。

《走进集群》中概述的这款解决方案实际上包含四个组件:

  1. iBGP 网络 —— 内部 BGP (iBGP) 用于在数据中心的自治系统 (AS) 内交换路由信息,可帮助确保网络可靠性和可扩展性。在大多数数据中心中,iBGP 已就位并由网络团队提供支持。
  2. Project Calico CNI 联网 —— Project Calico 是一种开源联网解决方案,可灵活地连接本地数据中心内的环境,同时对流量进行细粒度控制。在 Kubernetes 集群中,我们使用 Project Calico 的 CNI 插件进行联网,并启用 BGP。该操作允许您控制分配给 pod 的 IP 地址池,这有助于快速识别任何联网问题。
  3. 基于 NGINX Plus 的 NGINX Ingress Controller —— 借助 NGINX Ingress Controller,您可以监控 pod 的服务端点 IP 地址,并在不中断流量处理的情况下自动重新配置上游服务列表。应用团队还能够利用 NGINX Plus 中的许多其他企业级七层 HTTP 功能,包括主动健康检查、mTLS 和基于 JWT 的身份验证。
  4. NGINX Plus 作为边缘的反向代理 —— NGINX Plus 作为 Kubernetes 集群边缘的反向代理,在数据中心的交换机和路由器与 Kubernetes 集群的内部网络之间提供了一条路径,可以替代 Kubernetes LoadBalancer 对象,并使用 Quagga 来配置 BGP。

下图展示了该解决方案架构,显示了解决方案组件用于通信的协议,而不是请求处理期间数据交换的顺序。

 

免费下载白皮书

通过共同实施一款组件定义明确的解决方案,网络和应用团队可轻松地实现最佳性能和可靠性。

我们的解决方案使用现代联网工具、协议和现有架构。由于价格经济且易于实施、管理和支持,它可以助力简化工作并将您的各个团队轻松连接起来。

如欲查看代码实例并了解解决方案部署的分步指南,请免费下载《走进集群 》白皮书