我有一个用例,我试图在 AKS 集群中从当前的 Kubernetes(社区)入口控制器切换到 NGINX 入口控制器(基于 OSS 的免费版本)。
我发现基于 k8 的入口控制器拥有更强大的社区支持,有些人甚至认为它比 NGINX 入口控制器具有更多功能。但 NGINX 版本支持一些高级功能,例如 Canary(超过 2 个服务)和熔断等。
参考:https://stackoverflow.com/a/78494077/13126651
我想知道两件事,因为它们都是基于 NGINX 的。
免责声明:我从事 NGINX Ingress Controller 工作。
我们不倾向于记录社区入口控制器和 NGINX 入口控制器之间的差异,因为比较很快就会过时,但我可以回答你的两个要点。
如果我从社区 Ingres 控制器切换到 NGINX Ingress Controller,是否会有重大代码更改或逻辑更改
有关于此的文档这里。如果您选择将
Ingress
资源转换到 CRD(例如 VirtualServer
CRD),有两种路径,这可能比转换到 Ingress
资源需要更多工作,如 Ingress
-> Ingress
主要是注释更改,但根据您想要的功能,这可能是值得的。例如,流量分割、重定向和匹配构造都不能很好地融入Ingress
注释,但它们是VirtualServer
CRD的一部分。
如果 NGINX Ingress Controller 由 NGINX 而不是由社区维护(如 Kubernetes INGRESS 控制器),那么使用由 NGINX 控制是否有缺点?
我认为它由与 NGINX 本身相同的实体拥有是一个优势。例如,当我们向 NGINX Ingress Controller 添加新功能时,我们首先在同事(了解 NGINX 内部结构的人)面前演示它们,并获得反馈并迭代这些功能。这是在其他地方不可能实现的独特卖点。此外,由于 F5 NGINX 归根结底是一家安全公司,因此我们在安全方面坚持非常高的标准,即图像修补、TMA 等。
我只是想知道为什么社区更喜欢社区版?
两者最终都很受欢迎。当我写这篇文章时,NGINX Ingress Controller 已接近 10 亿 docker pulls。
有任何性能问题吗
不,我们使用核心 NGINX OSS/NGINX Plus。