Я делаю POC на простой архитектуре микросервисов с использованием типичного стека облачных вычислений Spring, но вместо сервера Eureka обнаружение служб выполняется с помощью spring-cloud-kubernetes, который не работает.
Весь POCздесь - https://github.com/dhananjay12/spring-microservices-using-spring-kubernetes
Шлюз в качестве пограничного сервера и 2 нисходящих сервисов - пользовательский сервис и контактный сервис.
Настройка k8 находится в папке k8s.
У последующих служб есть следующие зависимости:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
application.yml
server:
port: 8100
management:
endpoints:
web:
exposure:
include: '*'
spring:
cloud:
kubernetes:
enabled: true
reload:
enabled: true
eureka:
client:
enabled: false
bootstrap.yml:
spring:
application:
name: user-service
и аннотация @EnableDiscoveryClient
вmain class.
Служба шлюза имеет слишком важные зависимости kubernetes:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes-ribbon</artifactId>
</dependency>
application.yml
server:
port: 8050
spring:
application:
name: gateway
cloud:
kubernetes:
enabled: true
reload:
enabled: true
gateway:
discovery:
locator:
lowerCaseServiceId: true
enabled: true
eureka:
client:
enabled: false
logging:
level:
root: DEBUG
org.springframework.gateway: TRACE
org.springframework.cloud.gateway: TRACE
org.springframework.cloud.loadbalancer: TRACE
management:
endpoints:
web:
exposure:
include: '*'
bootstrap.yml
spring:
application:
name: gateway
и аннотация @EnableDiscoveryClient
в основном классе.
Пожалуйста, ознакомьтесь с yaml развертывания и обслуживания здесь - https://github.com/dhananjay12/spring-microservices-using-spring-kubernetes/tree/master/k8s
Я могу добраться до шлюза, но он не маршрутизируется в нисходящий потоксервис как пользовательский сервис:
Например - / user-service / users / getPublicMailingAddress
выдает страницу ошибки Whitable
, а журналы в шлюзе показывают:
2019-07-07 06:40:30.017 TRACE 1 --- [or-http-epoll-2] o.s.c.g.h.p.RoutePredicateFactory : Pattern "[/my-nginx-nginx-ingress-controller/**]" does not match against value "/user-service/users/getPublicMailingAddress"