【问题标题】:With multiple ingress controllers - Is it possible to have a "default" one?使用多个入口控制器 - 是否可以有一个“默认”控制器?
【发布时间】:2019-04-02 09:12:35
【问题描述】:

在我的集群上,我使用traefik 作为入口控制器,但现在还想提供一个nginx 控制器。

我不希望我的开发人员考虑他们的应用程序究竟是如何公开的。因此,我想让 traefik 成为“默认”控制器,并且仅在开发人员通过设置正确的 ingress.class 明确请求该控制器时才使用 nginx。

不幸的是,设置 no 类似乎会导致两个控制器争夺该入口。 :( 如果有正确的ingress.class,有没有办法告诉控制器处理入口对象?

如果这不可能,我正在考虑编写一个 MutatingAdmissionWebhook,它会插入 traefik 类,以防没有设置类。 - 这有意义吗,还是有更好的方法?

【问题讨论】:

    标签: kubernetes traefik kubernetes-ingress nginx-ingress traefik-ingress


    【解决方案1】:

    处理no class 是一个任意的入口实现决策。 您通常将所需的类传递到二进制文件中,然后使用相应的类过滤所有配置映射事件: https://github.com/helm/charts/blob/master/stable/nginx-ingress/templates/controller-deployment.yaml#L60

    据我所知,no class 没有人这样做,我也不建议这样做,因为它容易出错。有人会忘记添加类,并且会隐含地暴露在他们不想要的地方。

    变异钩子是一种可行的方法,因为它会添加一个明确的注释,说明它属于什么入口。试试https://github.com/HotelsDotCom/kube-graffiti

    最简单的方法是注册 traefik 以在 ingress.class: defaultdev 上收听,并要求开发人员将其放入所有模板中。通过这种方式,您可以将它们从下面的特定入口选择中抽象出来。

    【讨论】:

      猜你喜欢
      • 2021-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-30
      • 2013-09-21
      • 1970-01-01
      相关资源
      最近更新 更多