我仍在学习Kubernetes,然后我遇到了'Ingress'和'IngressRoute'对象。这两个对象有什么不同? IngressRoute是否取代了旧的Ingress? 我正在运行带有Traefik 2.1的Kubernetes集群V1.17。我的IngressRoute正常工作,但我也发现了解如何定义Ingress的博客。
我仍在学习Kubernetes,然后我遇到了'Ingress'和'IngressRoute'对象。这两个对象有什么不同? IngressRoute是否取代了旧的Ingress? 我正在运行带有Traefik 2.1的Kubernetes集群V1.17。我的IngressRoute正常工作,但我也发现了解如何定义Ingress的博客。
Ingress是一个共享的抽象层,可以由多个提供商(如Nginx、ALBs、Traefik、HAProxy等)实现。它特别是在一个相当简单的HTTP反向代理的抽象上,可以根据主机名和路径前缀进行路由选择。因为它必须是一个共享的东西,这意味着处理提供者特定设置的配置非常棘手。一些提供者方面的团队已经决定,共享的抽象的好处不值得实现的复杂性,并制作了自己的东西,到目前为止,Contour和Traefik都将它们命名为IngressRoute,但除了类似的名称之外没有任何联系。
Contour处理得相当不错,允许两个系统并存,Traefik团队忽视了我们的警告,基本上取消了Ingress的支持,只留下了普通的配置,因为他们认为不支持它也没有什么好处。你能看出我有点儿生气吗?因为我确实有。
基本上,Ingress是官方的东西,但它并不完美,有些人正在努力开发一个新的、更好的东西,但情况并不顺利。
ingressRoute
是Traefik特有的,它不是Kubernetes原生的。它是一种自定义资源定义(Custom Resource Definition),允许您利用Traefik在Kubernetes ingress
资源中没有暴露的功能。
Traefik文档解释了这背后的原因。
......社区表示需要受益于Traefik的功能,而不必借助(很多)注释,因此我们编写了一个IngressRoute类型的自定义资源定义(别名为CRD)...