Я пытался запустить свои приложения после отправки их в экземпляр CloudFoundry. Экземпляр, который я использую, не позволяет выполнять запросы с использованием http (они просто истекают по таймауту), поэтому мне нужно направлять все запросы на https.
Я использую следующие компоненты / версии:
- Java 10
- Spring Boot 2.0.4.RELEASE / Spring Cloud Finchley.SR1
- весна-облако-шлюз
- Весна-облако-конфигурация-сервер
- Весна-облако-Starter-Netflix-Eureka
Неудачная конфигурация
EurekaClient Config (в шлюзе и бэкэнде, куда должен маршрутизироваться gw)
eureka:
client:
serviceUrl:
defaultZone: ${DISCOVERY_SERVICE_URL:http://localhost:8061}/eureka/
instance:
hostname: ${vcap.application.uris[0]:localhost}
nonSecurePortEnabled: false
securePortEnabled: true
securePort: ${server.port}
statusPageUrl: https://${eureka.instance.hostname}/actuator/info
healthCheckUrl: https://${eureka.instance.hostname}/actuator/health
homePageUrl: https://${eureka.instance.hostname}/
secure-virtual-host-name: https://${vcap.application.application_uris[0]}
Конфигурация шлюза
spring:
cloud:
gateway:
discovery:
locator:
enabled: true
routes:
- id: user-service
uri: lb://user-service
predicates:
- Path=/user/**
filters:
- RewritePath=/user/(?<segment>.*), /$\{segment}
То, что я уже пробовал:
- Использование
lb:https://user-service
, как описано в документах -> Насколько я понимаю, эффекта не будет - Используйте реальные URL-адреса приложений (
uri: https://user-service.cf-instance.io
) -> Маршрутизация работает должным образом.
Но я не хочу определять URL-адреса в своей конфигурации, они должны возвращаться eureka и правильно создаваться шлюзом.
заранее спасибо
Редактировать:
Вот результат /eureka/apps
https://pastebin.com/WP3b6PQG
В настоящее время я работаю над добавлением текущего кода в GitHub. Я отредактирую этот пост, когда найду время, чтобы получить ясное состояние.
Изменить 2:
Вы можете найти полный пример (с SpringCloudGateway, Eureka, ...) по адресу мой GitHub Это работающий пример, применяемая конфигурация не будет использовать Eureka. Чтобы использовать Eureka, необходимо использовать gateway-service-cloud.yml
в службе конфигурации.
- id: user-service
uri: lb://user-service
Не обращайте внимания на службу документации, это пока не сработает, сначала мне нужно переписать путь.
<eurekaserver>/eureka/apps
? - person spencergibb   schedule 20.08.2018/eureka/apps
точно такой же (кроме ip, временных меток и id). - person Konrad Grüner   schedule 26.08.2018