Kubernetes Ingress和IngressRoute有什么区别?

24

我仍在学习Kubernetes,然后我遇到了'Ingress'和'IngressRoute'对象。这两个对象有什么不同? IngressRoute是否取代了旧的Ingress? 我正在运行带有Traefik 2.1的Kubernetes集群V1.17。我的IngressRoute正常工作,但我也发现了解如何定义Ingress的博客。

2个回答

38

Ingress是一个共享的抽象层,可以由多个提供商(如Nginx、ALBs、Traefik、HAProxy等)实现。它特别是在一个相当简单的HTTP反向代理的抽象上,可以根据主机名和路径前缀进行路由选择。因为它必须是一个共享的东西,这意味着处理提供者特定设置的配置非常棘手。一些提供者方面的团队已经决定,共享的抽象的好处不值得实现的复杂性,并制作了自己的东西,到目前为止,Contour和Traefik都将它们命名为IngressRoute,但除了类似的名称之外没有任何联系。

Contour处理得相当不错,允许两个系统并存,Traefik团队忽视了我们的警告,基本上取消了Ingress的支持,只留下了普通的配置,因为他们认为不支持它也没有什么好处。你能看出我有点儿生气吗?因为我确实有。

基本上,Ingress是官方的东西,但它并不完美,有些人正在努力开发一个新的、更好的东西,但情况并不顺利。


2
此外,对于加分项来说,在OpenShift中的路由器系统启发了Ingress标准,但它仍然存在是因为OpenShift有长期的向后兼容承诺。 - coderanger
2
是的,这很尴尬。我花了几个星期的时间才弄清楚如何在裸金属集群上设置Traefik。所以目前我采用Traefik IngresRoute,这对我来说最终起作用了。 - Ralph
1
请注意,这会限制您使用标准工具(如cert-manager中的Ingress集成和external-dns)的能力(尽管后者最终确实添加了对Contour的CRD的特定支持)。 - coderanger
2
使用Traefik 2.2时,不再需要使用IngressRoute,反向代理可以通过Kubernetes的核心Ingress定义进行配置。请参见此处 - Ralph

23
ingressRoute是Traefik特有的,它不是Kubernetes原生的。它是一种自定义资源定义(Custom Resource Definition),允许您利用Traefik在Kubernetes ingress资源中没有暴露的功能。 Traefik文档解释了这背后的原因。

......社区表示需要受益于Traefik的功能,而不必借助(很多)注释,因此我们编写了一个IngressRoute类型的自定义资源定义(别名为CRD)...


1
这就清楚了,为什么我在 Kubernetes 网站上没有找到解释。 - Ralph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接