Назад | Перейти на главную страницу

Управление одним Kubernets Ingress с несколькими правилами

Я использую Kubernetes Ingress на GCP для маршрутизации трафика к различным HTTP-службам.

TL; DR: есть ли способ управлять одним объектом Ingress, добавляя к нему правила из нескольких различных файлов спецификаций? Мы хотим разрешить каждому микросервису развертывать свои собственные правила маршрутизации, но иметь только один (или несколько) экземпляров Ingress.

Службы должны быть представлены в рамках фона. Одна из основных причин использования Kubernetes для развертывания микросервисов HTTP заключается в том, что наши группы могут развертывать каждую службу независимо и даже развертывать новые службы без изменения какой-либо центральной конфигурации.

В среде, где существует множество (десятки, сотни?) Конечных точек HTTP, каждая из которых управляется и развертывается независимо, маршрутизация становится проблемой; Ingress «должен» решить эту проблему, но мы не хотим управлять конфигурацией маршрутизации отдельно или централизованно от сервисов.

Теперь невозможно управлять одним единственным объектом Ingress, добавляя к нему правила из нескольких различных файлов спецификаций с помощью GKE Ingress Controller.

Я бы сказал, что реализация GKE Ingress Controller предназначена просто для того, чтобы помочь вам создать ресурс K8s Ingress с его утилитами из родных K8s.

Чтобы сделать что-то более сложное, вам нужно использовать другие реализации:

  • «Поддержка объединяемых типов входящего трафика» контроллера Nginx-ingress, например c4f4t0r рекомендовать.

  • Входной шлюз Istio, мне кажется, он проще входного контроллера Nginx. И вы можете изменить свои правила HTTP в каждом развертывании через Virtual Service

Для GCP я бы подумал об использовании Istio, так как это вариант, когда вы создаете кластер сейчас.