【问题标题】:What is the difference between a Kubernetes Ingress and a IngressRoute?Kubernetes Ingress 和 IngressRoute 有什么区别?
【发布时间】:2020-02-11 21:16:31
【问题描述】:

我还在学习 kubernetes,偶然发现了“Ingress”和“IngressRoute”这两个对象。这两个对象有什么不同? IngressRoute 是否取代了“旧”的 Ingress?我正在使用 Traefik 2.1 运行 Kubernetes Cluster V1.17。我的 IngressRoute 工作正常,但我还找到了解释如何定义入口的博客。

【问题讨论】:

    标签: kubernetes traefik-ingress


    【解决方案1】:

    Ingress 是一个共享抽象,可以由许多提供者(Nginx、ALB、Traefik、HAProxy 等)实现。它特别是对相当简单的 HTTP 反向代理的抽象,可以基于主机名和路径前缀进行路由。因为它必须是一个共享的东西,这意味着处理特定于提供程序的设置的配置很尴尬。提供者方面的一些团队认为,共享抽象的好处不值得实现的复杂性,并制作了自己的东西,到目前为止,Contour 和 Traefik 都将它们命名为 IngressRoute,但除了类似的命名之外没有其他联系。

    Contour 处理得相当好,并允许两个系统共存,Traefik 团队无视我们的警告,基本上将 Ingress 削弱为普通配置,只是因为他们认为支持它没有任何好处。你能说我对这个很咸吗?因为我绝对是。

    基本上,Ingress 是官方的东西,但它并不完美,有些人正在尝试制作一个新的、更好的东西,但进展并不顺利。

    【讨论】:

    • OpenShift 中的路由器系统也是一个奖励点,它启发了 Ingress 标准,但仍然存在,因为 OpenShift 长期以来一直有向后兼容的承诺。
    • 是的,这很尴尬。我花了几个星期才弄清楚如何在裸机集群上设置 traefik。所以现在我要使用 Traefik IngresRoute,它最终对我有用。
    • 请注意,这会限制您使用标准工具的能力,例如 cert-manager 和 external-dns 中的 Ingress 集成(尽管后者最终确实添加了对 Contour 的 CRD 的特定支持)。
    • 使用 traefik 2.2。不再需要使用 IngressRoute 并且可以使用 kubernetes 的核心 Ingress 定义配置反向代理。另见here
    【解决方案2】:

    ingressRoute 是 Traefik 特有的。它不是 Kubernetes 原生的。这是一个自定义资源定义,允许您利用 Kubernetes ingress 资源中未公开的 Traefik 功能

    Traefik docs 解释了这背后的原因。

    ...社区表示需要从 Traefik 功能中受益,而无需使用(大量)注释,我们最终为 IngressRoute 类型编写了自定义资源定义(以下简称 CRD)...

    【讨论】:

    • 这说明了为什么我没有在 kubernetes 网站上找到解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 2019-03-05
    • 2018-05-30
    • 2020-04-29
    • 2015-01-30
    • 2016-04-04
    • 2018-05-12
    相关资源
    最近更新 更多