Маршруты Spring Cloud Gateway и DiscoveryClient - PullRequest
2 голосов
/ 12 марта 2019

Я пытаюсь перенести шлюз, работающий с использованием spring-cloud-starter-netflix-zuul, на Spring Cloud Gateway, и у меня возникают проблемы с маршрутизацией запросов.

Я наткнулся на следующую документацию по настройке предикатов и фильтров дляМаршруты DiscoveryClient:

Настройка предикатов и фильтров для маршрутов DiscoveryClient

Вот фрагмент из моей конфигурации Netflix Zuul:

zuul:
  routes:
    account-service: /accounts/**

А вотФрагмент из конфигурации Spring Cloud Gateway, где я пытаюсь настроить эквивалентный маршрут:

spring:
  cloud:
    gateway:
      routes:
        - id: account-service-route
          uri: lb://account-service
          predicates:
          - Path=/accounts/**

Я использую Spring Cloud Eureka в качестве сервера обнаружения (в отдельном микросервисе), и в настоящее время у меня нетлюбая конфигурация, описанная в Настройка предикатов и фильтров для маршрутов DiscoveryClient

Если я отправлю запрос на /accounts/***, я получу ответ 404.Если я изменю конфигурацию Spring Cloud Gateway на следующую и выдам тот же запрос на /account-service/***, я получу 403 Запрещенный ответ:

spring:
  cloud:
    gateway:
      routes:
        - id: account-service-route
          uri: lb://account-service
          predicates:
          - Path=/account-service/**

Я подозреваю, что это связано с поведением по умолчаниюSpring Cloud Gateway относительно того, как настроены маршруты DiscoveryClient, но я не вижу достаточно в журналах, чтобы указать мне правильное направление.

Итак, мой вопрос заключается в следующем: при использовании Spring Cloud Gateway сSpring Cloud Eureka, необходимо ли вносить записи конфигурации, как указано в Настройка предикатов и фильтров для маршрутов DiscoveryClient ?

Если это так, может ли кто-нибудь дать больше объяснения / ясности относительно того, что необходимо настроить, обращаясь к моим примерам маршрутов?Извините, если я что-то упустил, но из того, что я прочитал, для меня не очевидно, что именно нужно для этой конфигурации.Например, настроены ли spring.cloud.gateway.discovery.locator.predicates и spring.cloud.gateway.discovery.locator.filters в дополнение или вместо предикатов и фильтров spring.cloud.gateway.routes?

Если нет, какие еще конфигурации я могу пропустить?

Я нахожусь в Spring Cloud Finchley.SR3 / Spring Boot 2.0.8.RELEASE.

...