为什么我们要在单独的Nginx容器中部署静态Web应用程序?

时间:2020-11-01 15:46:40

标签: nginx kubernetes kubernetes-ingress nginx-ingress

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

对我来说似乎有点多余。为什么不将内容放在卷上,将其安装到ingress-nginx-controller并从那里提供静态资产。从性能角度来看似乎更好:没有额外的代理,也没有额外的容器(带有nginx)会消耗计算资源。

2 个答案:

答案 0 :(得分:1)

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

ingress-nginx只是入口控制器的一种实现,它恰好还可以提供静态内容。 HAProxyTraefikAWS lb在天平的另一端。

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

如果一个代理跃点是性能上的关键差异因素,那么在边缘CDN /设备上托管静态内容可能会获得更多好处。另一种选择是不依赖Ingress并将服务直接发布到外界。

答案 1 :(得分:0)

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