Spring Cloud Gateway на движке приложений не перенаправляет запросы на нисходящие сервисы - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь развернуть простое приложение для микросервиса (Spring boot) в GAE. Приложение имеет 3 службы - 1. Служба обнаружения 2. Spring Cloud Gateway 3. Служба поддержки клиентов

Я пытаюсь вызвать API через API-шлюз. Это прекрасно работает на локальном компьютере, но в приложении GAE получено 404.

Я использую URL-адрес - https://Gateway-url/customer-service/version И соответствующая конфигурация YAML:

spring:
  cloud:
    gateway:     
      routes:
      -id: customer-service
        uri: https://XXXXXX.customer-service.appspot.com/
        predicates:
        - Path=/customer-service/**       
        filters:
        - StripPrefix=1

URI, настроенный в приведенном выше фрагменте кода, - целевой URL-адрес службы GAE.

Итак, когда я нажимаю на URL https://Gateway-url/customer-service/version в в браузере я получаю сообщение об ошибке 404, но оно работает, если я нажму на прямой URL https://customer-service-url/version

Когда я изменил конфигурацию шлюза API в локальной среде, ( изменить URI на облачный сервис URI), проблема воспроизводима. Поэтому я думаю, что шлюз не может перенаправить запросы на целевой URL-адрес службы App Engine.

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 20 апреля 2020

Я думаю, что проблема заключается в URL, который вы используете в файле конфигурации для маршрутизации ваших запросов. Согласно облачной документации Google, для звонков из одной услуги в другую вы должны использовать такую ​​конечную точку, как эта

https://VERSION_ID-dot-SERVICE_ID-dot-PROJECT_ID.REGION_ID.r.appspot.com

Как вы можете видеть здесь https://cloud.google.com/appengine/docs/standard/java/communicating-between-services

И кажется, что используемый вами URL не подходит для этого.

В любом случае, я думаю, что в безсерверной среде, такой как механизм приложений, лучшим вариантом для обнаружения служб и маршрутизации запросов через шлюз являются службы, предоставляемые Google. В случае обнаружения службы это делается автоматически, и если вам нужен шлюз, вы можете использовать облачные конечные точки Google, которые имеют большую интеграцию с механизмом приложений. Потому что это шлюз, предназначенный для использования с этими приложениями

...