1

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

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

不幸的是,看起来没有设置类会导致两个控制器都在争夺那个入口。:( 有没有办法告诉控制器处理入口对象,如果有正确的ingress.class

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

4

1 回答 1

2

处理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: default或者dev让开发者把它放到他们所有的模板中。通过这种方式,您将从下面的特定入口选择中抽象出它们。

于 2019-04-02T14:26:50.923 回答