Я использую 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, так как это вариант, когда вы создаете кластер сейчас.