Ingress是一个流量网关,其根据配置的URI路径路由规则,为运行在Kubernetes集群中的Service分发流量,从系统架构设计的角度看,Ingress位于Service的上层,本文主要描述Ingress的基本使用方式。

如上所示,client是发送请求的客户端,Ingress是流量网关,在client与Ingress之间是Ingress-managed load balancer网关负载均衡器,Service是服务层,Ingress根据routing rule路由规则给Service分发流量,Pod是运行应用容器实例,Service与Pod之间映射关系绑定。

如上所示,定义一个Ingress,其路由规则将请求的URI路径为/testpath的流量分发到test服务中

如上所示,定义一个Ingress,将路由规则的请求URI路径是/icons的流量分发到定义的resource中,resource是命名空间相同的其他引用对象

ImplementationSpecific

匹配URI路径是由IngressClass确定

Exact

完全匹配RUI路径,大小敏感

Prefix

前缀匹配URI路径

如上所示,路由规则中的pathType匹配的URI路径类型

如上所示,使用不同域名、URI路径的前缀匹配两个服务Service1以及Service2

如上所示,定义一个IngressClass,该对象的路由规则由对应的Ingress controller控制器实现,Ingress可以由不同的Ingress controller控制器实现

如上所示,定义一个作用域是cluster的Ingress Controller控制器,其作用范围是Kubernetes集群内,定义一个作用域是Namespace的Ingress Controller控制器,其作用范围是对应的命名空间namespace

如上所示,定义一个默认的IngressClass,其作用范围是Kubernetes集群内

如上所示,定义一个无路由规则的Ingress,该Ingress是由Ingress Controller控制器负责分配IP地址

如上所示,定义一个Ingress,将流量分发到相同域名的不同路径的服务service1以及service2中

如上所示,定义一个Ingress,根据不同的域名host,将流量分发到对应的服务,service1以及service2中

如上所示,定义一个Ingress,根据不同的域名host,将流量分发到对应的服务,service1以及service2中,不匹配域名host的流量分发到服务service3中

如上所示,定义一个支持https协议的TLS加密解密的secret,在Ingress中使用该secret对象支持https,其默认端口号是443