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有啥区别?