概述
与Service的四层负载均衡不同,Ingress是反向代理的抽象,提供七层的HTTP和HTTPS协议转发,可使用域名和路径配置转发规则,例如通过访问路径将请求路由到不同的Service,以实现7层的负载均衡。
Ingress资源定义了访问集群服务的规则,这些规则包括如何处理来自外部的请求、如何路由这些请求到后端的服务等。Ingress资源可以定义多个规则,每个规则对应一个前端的路径和一个或多个后端的服务。Ingress并非自身提供服务,而是依赖Ingress Controller来实现。Ingress Controller是一个持续运行的守护进程,负责处理实际的路由和负载均衡。常见的Ingress Controller包括NGINX Ingress Controller、Traefik等。
应用场景
Ingress在以下几个关键应用场景中发挥着重要作用:
- 单服务暴露 :当集群中只有一个服务需要对外暴露时,Ingress可以作为该服务的路由器,处理所有进入应用的请求;
- 基于主机名或URL的路由 :当集群中有多个服务需要对外提供服务时,Ingress可以基于请求的主机名或URL路径,将请求路由到对应的服务。这种情况下,Ingress充当反向代理服务器的角色,使得在一个公共的IP地址下,可以提供多个服务;
- SSL终止 :对于需要提供安全传输服务的应用,Ingress可以负责处理SSL连接,包括证书的管理和续签,使得后端服务可以专注于提供业务逻辑,而无需处理SSL连接;
- 负载均衡 :Ingress可以根据配置的路由规则,将请求分发到后端的多个服务实例,实现负载均衡。这对于需要处理大量请求,或者需要高可用服务的应用至关重要;
- 网络流量控制 :Ingress还可以实现更为复杂的网络流量控制,如基于请求的权重进行路由,或者实现蓝绿部署等。