使用多个入口控制器 - 是否可以有一个 "default" 一个?
With multiple ingress controllers - Is it possible to have a "default" one?
在我的集群上,我使用 traefik
作为入口控制器,但现在还想提供一个 nginx
控制器。
我不希望我的开发人员考虑他们的应用程序究竟是如何公开的。因此,我想让 traefik 成为 "default" 控制器,并且仅当开发人员通过设置正确的 ingress.class
.
明确请求该控制器时才使用 nginx
不幸的是,设置 no class 似乎会导致两个控制器为该入口争吵。 :(
如果有正确的 ingress.class
?
,有没有办法告诉控制器 仅 处理入口对象
如果那不可能,我正在考虑编写一个 MutatingAdmissionWebhook,它将在没有设置 class 的情况下插入 traefik class。 - 这是否有意义,或者有更好的方法吗?
处理 no class
是一个任意的入口实施决定。
您通常将所需的 class 传递到二进制文件中,然后它会使用相应的 class 过滤所有配置映射事件:
https://github.com/helm/charts/blob/master/stable/nginx-ingress/templates/controller-deployment.yaml#L60
据我所知,没有人这样做no class
,我也不推荐,因为它很容易出错。有人会忘记添加 class 并且会隐式地暴露在他们不想要的地方。
Mutating hook 是一种可行的方法,因为它会添加一个明确的注释,说明它属于哪个入口。尝试 https://github.com/HotelsDotCom/kube-graffiti
最简单的方法就是注册 traefik 以监听 ingress.class: default
或 dev
并要求开发人员将其放入所有模板中。这样,您将从下方的特定入口选项中抽象出它们。
在我的集群上,我使用 traefik
作为入口控制器,但现在还想提供一个 nginx
控制器。
我不希望我的开发人员考虑他们的应用程序究竟是如何公开的。因此,我想让 traefik 成为 "default" 控制器,并且仅当开发人员通过设置正确的 ingress.class
.
不幸的是,设置 no class 似乎会导致两个控制器为该入口争吵。 :(
如果有正确的 ingress.class
?
如果那不可能,我正在考虑编写一个 MutatingAdmissionWebhook,它将在没有设置 class 的情况下插入 traefik class。 - 这是否有意义,或者有更好的方法吗?
处理 no class
是一个任意的入口实施决定。
您通常将所需的 class 传递到二进制文件中,然后它会使用相应的 class 过滤所有配置映射事件:
https://github.com/helm/charts/blob/master/stable/nginx-ingress/templates/controller-deployment.yaml#L60
据我所知,没有人这样做no class
,我也不推荐,因为它很容易出错。有人会忘记添加 class 并且会隐式地暴露在他们不想要的地方。
Mutating hook 是一种可行的方法,因为它会添加一个明确的注释,说明它属于哪个入口。尝试 https://github.com/HotelsDotCom/kube-graffiti
最简单的方法就是注册 traefik 以监听 ingress.class: default
或 dev
并要求开发人员将其放入所有模板中。这样,您将从下方的特定入口选项中抽象出它们。