为什么需要在 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在这些的基...
- 下一篇
好好的“代码优化”是怎么一步步变成“过度设计”的
有一天Review师妹的代码,看到一行很难看的代码,毕竟师妹刚开始转JAVA,一些书写小习惯还是要养成,所以锱铢必较还是有必要的,于是给出了一些优化思路的建议,以及为什么要这么做。建议完后,我并没有停下”追求极致“的脚步,随着不断的思考,发现这段代码的优化慢慢变得五花八门起来了,完成了一次“代码优化”到“过度设计”的典型思考过程,这过程中涉及了很多Java的语法糖及设计模式的东西,很典型,能启发思考,遂记录下来。 一切的开始 起初是一段很简单的代码,开始仅仅是将外域的一些标识符转换为域内的标识符。 publicIntegerparseSaleType(StringsaleTypeStr){ if(saleTypeStr == null || saleTypeStr.equals("")){ return null; } if(saleTypeStr.equals("JX")){ return 1; } return null;} 逻辑上很简单,实现的逻辑看上去也没啥大问题,基本学校的老师也是这么教的。 语法规范 但是嘛,不好看也容易犯错误,鸡蛋里挑骨头也得挑,于是给出了几个写代码的建议...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2整合Redis,开启缓存,提高访问速度
- MySQL8.0.19开启GTID主从同步CentOS8
- 设置Eclipse缩进为4个空格,增强代码规范