为什么我们要在一个单独的nginx容器中部署静态web应用程序



我在互联网上找到的所有教程都演示了如何在nginx容器中部署网站/应用程序,并设置Ingress代理该容器的相关请求。

这对我来说似乎有点多余。为什么不把内容放在一个卷上,安装到ingress nginx控制器上,并从那里提供静态资产呢。从性能的角度来看,它似乎更好:没有额外的代理,也没有额外的容器(使用nginx(来消耗计算资源。

Ingress资源是一个抽象概念,旨在将HTTP/S请求路由到kubernetes服务。它定义了该功能的有限子集,以保持通用性并由许多类型的入口控制器实现。

ingress nginx只是ingress控制器的一种实现,它恰好也擅长于提供静态内容。HAProxy、Traefik或AWS lb在天平的另一端。

一个基于nginx的ingress控制器可以添加自定义注释来支持你所建议的自定义内容,但我想你很难在项目中争论这一点。在内部,他们已经为默认后端添加了第二个nginx实例。

如果一个代理跳是性能上的关键区别,那么在边缘CDN/设备上托管静态内容可能会带来更多好处。另一种选择是不依赖Ingress,直接向外界发布服务。

您需要一个容器来运行应用程序。Ingress服务只是用于访问Kubernetes集群之外的应用程序。您不能只将内容保存在卷中并将其装载到入口控制器。一个入口控制器用于路由多个应用程序的请求。

最新更新