为什么需要在 OpenShift 上部署企业级 Ingress Controller
原文作者:Max Mortillaro of GigaOm
原文链接:为什么需要在 OpenShift 上部署企业级 Ingress Controller
转载来源:NGINX 中文官网
NGINX 唯一中文官方社区 ,尽在 nginx.org.cn
Red Hat OpenShift 作为业界备受推崇的 Kubernetes 平台解决方案,凭借其全面的功能集、稳健的架构和企业级支持获得了诸多企业的青睐。毫无疑问,这些企业也在寻求企业级流量控制功能及自动化,以增强其 Kubernetes 平台并加快应用开发和部署速度。
Kubernetes 要求使用 Ingress 接口来处理进入集群的外部流量。在实践中,访问 Kubernetes 应用的外部客户端通过网关进行通信,该网关将四层至七层的流量暴露给集群内的 Kubernetes 服务。
要实现这一点,Ingress 资源中的流量路由规则需要由 Ingress controller 来实施。没有 Ingress controller,Ingress 将一无用处。在下图中,Ingress controller 将所有外部流量发送到单个 Kubernetes 服务。
Ingress controller 将所有流量发送到单个 Kubernetes 服务的示例
(改编自 Kubernetes 文档)
NGINX Ingress Controller
NGINX Ingress Controller 是一个 Ingress controller 实现,用于控制 Kubernetes 应用的出入向流量,并通过自动化软件配置增强 NGINX 负载均衡器的功能。它提供了对 Kubernetes 生产环境部署至关重要的强大的流量管理功能,超越了 OpenShift 的默认 Ingress controller 提供的基本功能。
NGINX Ingress Controller 在两个版本中提供,一个是 NGINX 开源版,另一个是 NGINX Plus。NGINX 开源版 Ingress Controller 是免费的,而 NGINX Plus Ingress Controller 是商业支持的实现,提供先进的企业级功能。
一般来说,Ingress controller 实现只支持 HTTP 和 HTTPS,而 NGINX 实现还支持更广泛的协议,包括 TCP、UDP、gRPC 和 WebSocket,能够将 Ingress 支持扩展到许多新的应用类型。此外,它还支持 TLS Passthrough,这是一个重要的增强功能,使其能够路由 TLS 加密的连接,而无需进行解密或访问 TLS 证书和密钥。
除了这些功能之外,NGINX Ingress Controller 还支持细粒度定制,可以限定到特定的应用或集群以及策略的使用。策略只需定义一次,然后根据需要由不同的团队应用到不同的应用领域。策略可用于限制请求速率、验证 mTLS 身份验证以及基于 IP 地址或子网放行或拒绝流量。NGINX Ingress Controller 还可支持 JWT 验证和 WAF 策略。下面的 示例策略 将来自每个客户端 IP 地址的请求限制为每秒 1 个请求。
apiVersion: k8s.nginx.org/v1
kind: Policy
metadata:
name: rate-limit-policy
spec:
RateLimit:
rate: 1r/s
key: ${binary_remote_addr}
zoneSize: 10M
NGINX Ingress Controller 的用例
NGINX 至少已确定了三个使用 NGINX Ingress Controller 的原因:
- 提供生产级功能
- 保护容器化应用
- 提供总流量管理
下图详尽展示了潜在用例,其中一些用例(流量路由和 WAF 策略)已在上一节中讨论过。
跨运营团队的 NGINX Ingress Controller 用例
一个有趣的示例用例是实施蓝绿部署,您可以将生产流量从当前的应用版本(蓝色)切换到新版本(绿色)并验证新版本是否正常运行。在下面的配置示例中,您可先将 90% 的流量引导至蓝色应用(当前版本),然后将 10% 流量引导至绿色应用(新版本)。
您可以监控流量,检测绿色用户群是否遇到了任何问题。如果遇到了问题,您可以回滚配置,将所有绿色用户重新路由回蓝色版本。反之,如果新应用运行良好,您可以调整流量分割比例,将更多流量引导至绿色版本,验证绿色应用在负载增加的情况下的表现,并最终将所有流量路由到新的绿色应用,然后停止使用旧的蓝色应用。
apiVersion: k8s.nginx.org/v1
kind: VirtualServer
metadata:
name: app
spec:
host: app.example.com
upstreams:
- name: products-v1
service: products-v1-svc
port: 80
- name: products-v2
service: products-v2-svc
port: 80
routes:
- path: /products
splits:
- weight: 90
action:
pass: products-v1
- weight: 10
action:
pass: products-v2
相关示例还有很多,我们无法在此一一列举,您可前往 NGINX 的专用 GitHub 仓库查看更多示例。
结语
Ingress controller 不仅仅是负载均衡。对于简单的早期阶段用例而言,默认的 Ingress controller 可能就足以满足需求,但对于寻求充分利用云原生开发模型优势的企业和开发团队来说,生产级能力必不可少。
此外,高级 Ingress controller 不仅必须提供复杂的流量管理,而且还必须提供企业级安全性。这通过实施双向 TLS (mTLS) 身份验证、加密流量直通和 WAF 保护来实现。
最后,NetOps 和 NetSecOps 团队也会受到 Ingress controller 的影响。他们努力追求网络配置和基于策略的流量控制的自动化,不能让新兴的基于 OpenShift 的云原生工作负载成为需要手动配置活动的薄弱环节。他们需要与现有安全解决方案无缝集成的工具,以确保跨设备和平台的配置一致。
NGINX Ingress Controller 能够满足所有这些要求,它为在 OpenShift 上运行 Kubernetes 环境的企业提供了灵捷、安全、可扩展和完全支持的解决方案,可帮助他们实现更高的业务成效,同时创造巨大、即时的价值。
了解有关 NGINX 和 OpenShift 的更多信息:
-
网络研讨会和演示:借助 NGINX 充分利用 Kubernetes 的强大功能
NGINX 唯一中文官方社区 ,尽在 nginx.org.cn

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
.NET8极致性能优化-线程
前言 原文地址:.NET8极致性能优化-线程 首先来看下,为什么性能会一直持续性优化。.NET8引入的SSE-XMM(16字节)Register和AVX-YMM(32字节)Register是关键,传统的Register一般指令集层次能移动的最多只有8位,就算是最新的x64系统。但是SSE和AVX改变了这种局面,它们能一次性移动64位系统的一倍乃至四倍,这就是优化的关键。 前面本公众号(jianghupt)多篇文章,展示了很多.NET8的性能优化,基本上都是核心级的CLR/JIT优化,包括了VM,Zeroing,CHRL,Exception,Non_GC,Branch,GC,Reflection,AOT,Enum,DateTime等等。但是漏掉了一个较为重要的东西:线程。本篇来看下.NET8里面的线程优化。 公众号:江湖评谈(jianghupt),扫一扫关注。 ThreadStatic .NET在新的版本中,对线程,并发,并行,异步等方面做出了非常大的改进。比如ThreadPool完全重写,异步方法基础部分的完全重写,ConcurrentQueue队列的完全重写等等。.NET8在这些的基...
-
下一篇
得物云原生容器技术探索与落地实践
一、前言 得物 App 作为互联网行业的后起之秀,在快速的业务发展过程中基础设施规模不断增长,继而对效率和成本的关注度也越来越高。我们在云原生技术上的推进历程如图所示,整体上节奏还是比较快的。 从 2021 年 8 月开始,我们以提升资源使用率和资源交付效率为目标,开始基于云原生技术建设整个服务体系的高可用性、可观测性和高运维效率,同时要保证成本可控。在容器化过程中我们遇到了很多的挑战,包括:如何将存量的服务在保持已有研发流程不变的情况下,做到容器化部署和管理;容器化之后如何做到高效地运维;如何针对不同的业务场景,提供不同的容器化方案等等。此外,通过技术手段实现持续的成本优化是我们的长期目标,我们先后建设落地了画像系统、混部方案和调度优化等方案。本文把得物在推进云原生容器技术落地过程中相关方案和实践做一些总结和梳理,欢迎阅读和交流。 二、云原生应用管理 云原生应用管理方式 容器与 ECS 的资源形态是有差异的,所以会造成在管理流程上也会有不同之处。但是为了尽可能降低容器化带来的使用体验上的差异,我们参考业内容器应用 OAM 模型的设计模式,对容器的相关概念做了屏蔽和对等解释。例如:以“...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Red5直播服务器,属于Java语言的直播服务器
- MySQL数据库在高并发下的优化方案
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- MySQL8.0.19开启GTID主从同步CentOS8
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Dcoker安装(在线仓库),最新的服务器搭配容器使用