С несколькими входными контроллерами - возможно ли иметь «стандартный»? - PullRequest
1 голос
/ 02 апреля 2019

В моем кластере я использую traefik в качестве входного контроллера, но теперь также хочу предоставить nginx контроллер.

Я не хочу, чтобы мои разработчики думали о том, как именно их приложение выставлено. Поэтому я хотел бы сделать traefik контроллером по умолчанию и использовать nginx только в том случае, если разработчик явно запрашивает этот контроллер, устанавливая надлежащий ingress.class.

К сожалению, похоже, что установка no class приведет к тому, что оба контроллера будут бороться за этот вход. :( Есть ли способ сообщить контроллеру, что только обрабатывает входной объект, если имеет правильный ingress.class?

Если это невозможно, я думал о написании MutatingAdmissionWebhook, который вставит класс traefik, если класс не установлен. - Имеет ли это смысл или есть лучший способ?

1 Ответ

2 голосов
/ 02 апреля 2019

Обработка 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 и попросить разработчиков добавить это во все свои шаблоны.Таким образом, вы будете абстрагировать их от определенного входящего выбора внизу.

...