kubernetes - 使用多个入口 Controller - 是否可以有一个 "default"?

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

在我的集群上,我使用 traefik作为入口 Controller ,但现在还想提供 nginx Controller 。

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

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

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

最佳答案

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

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

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

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

关于kubernetes - 使用多个入口 Controller - 是否可以有一个 "default"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55470985/

相关文章:

node.js - 在我的简单注册/登录应用程序中使用 mongodb 从入口获取 502。 nginx入口ip不匹配api请求ip

Nginx.ingress.kubernetes.io/proxy-body-size 不起作用

nginx - 无法通过 nginx-ingress-controller 访问 Kubernetes ClusterIP 服务

azure - 使用一个具有多个入口路径的 oauth2_proxy 实例?

go - kubernetes API中是否有通过注解获取所有服务的函数

traefik - Traefik 是否可以处理多个证书/域

docker-compose - 如何配置 traefik w/docker-compose 为一项服务路由多个端口

kubernetes - Kubernetes Wordpress的入口

azure - 创建集群后将 RBAC 添加到 Azure Kubernetes (AKS)

go - 无法将 traefik 与动态配置文件一起使用