简介:在虚拟化时期的微服务架构下,业务通常采用流量网关 + 微服务网关的两层架构,流量网关负责南北向流量调度和安全防护,微服务网关负责东西向流量调度和服务治理,而在容器和 K8s 主导的云原生时代,Ingress 成为 K8s 生态的网关标准,赋予了网关新的使命,使得流量网关 + 微服务网关合二为一成为可能。
K8s Ingress简介
K8s集群内的网络与外部是隔离的,即在K8s集群外部无法直接访问集群内部的服务,如何让将K8s集群内部的服务提供给外部用户呢?K8s社区有三种方案:NodePort、LoadBalancer、Ingress,下图是对这三种方案的对比:

通过对比可以看到Ingress是更适合业务使用的一种方式,可以基于其做更复杂的二次路由分发,这也是目前用户主流的选择。
K8s Ingress现状
套用一句流行语:理想是丰满的、现实是骨感的,这句话放在K8s Ingress也同样适用,K8s希望通过Ingress来标准化集群入口流量的规则定义,但实际业务落地时需要的功能点要远比Ingress提供的多,为了满足业务诉求,各Ingress Provider也各出招数,总的来说解法分成两类:使用annotations扩展与使用新的CRD。下面使用图示来说明:

K8s Ingress Provider的发展趋势
Ingress Provider的百花齐放,站在用户角度各有利弊