Ingress 和反向代理有啥区别?

Posted

技术标签:

【中文标题】Ingress 和反向代理有啥区别?【英文标题】:What is the difference between an Ingress and a reverse proxy?Ingress 和反向代理有什么区别? 【发布时间】:2020-04-29 17:55:29 【问题描述】:

目前,我正在研究 Kubernetes,我遇到了 Ingress 对象这个术语。我想知道两者之间是否存在差异列表,在我看来,它们似乎是同义词。对我来说,nginx 似乎是一个更实用的入口,因为它允许例如视频和图像压缩、预取和缓存。

另一方面,通过提供负载平衡、流量路由、TLS/SSL 终止,Ingress 似乎与 NGINX 的反向代理重叠。与 NGINX/Envoy RP 相比,我看到的唯一一个入口可能是它是一个“kubernetes API 对象”。

这是否意味着它由两部分组成——API 和一些实际反向代理之间的接口?意思是,“入口”只是一个 kubernetes 术语,用于在其上强制执行 Kubernetes 的 API 的 NGINX RP 的包装器,或者它是一种完全独立的服务器类型?

您能否列出一些两者之间的差异?

【问题讨论】:

【参考方案1】:

你的理解是对的。Ingress 有两个部分,一个控制器,它实现了 kubernetes ingress API 接口,用于自动快速地配置反向代理,例如 nginx 或 envoy。

另一部分是反向代理本身如nginx、envoy。

因此,当您在 kubernetes 中部署入口设置时,它将在您的 kubernetes 集群中部署入口控制器和反向代理。

【讨论】:

【参考方案2】:

有多个供应商实施IngressController。甚至nginx 也有一个。

您对 Kubernetes 中的 Ingress 资源是正确的,就像我们过去手动部署的反向代理一样。 IngressController 服务是接收流量的实际反向代理。您创建的 kubernetes 资源 Ingress 类似于您将创建的 nginx.conf 配置文件。您可以通过运行nginx 部署来创建和运行您自己的Ingress,用LoadBalancer 服务包装它,并通过手动创建nginx.conf 文件来表达您的流量规则。使用 Ingress 资源只是在 Kubernetes 中执行此操作的原生且更简单的方法。

【讨论】:

很好的解释。

以上是关于Ingress 和反向代理有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

API(网关)提供的反向代理和Service Fabric有啥区别?

反向代理和网络服务器有啥区别?

K8S(Rancher)Ingress 规则 - Nginx 反向代理重定向

nginx服务器有啥作用以及啥是反向代理

反向代理对 GWT 应用程序有啥影响?

nginx正向代理和反向代理区别和好处