我正在使用典型的 Spring 云堆栈对简单的微服务架构进行 POC,但不是 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>
应用程序.yml
server:
port: 8100
management:
endpoints:
web:
exposure:
include: '*'
spring:
cloud:
kubernetes:
enabled: true
reload:
enabled: true
eureka:
client:
enabled: false
引导程序.yml:
spring:
application:
name: user-service
@EnableDiscoveryClient
和主类中的注释。
网关服务有过于相关的 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>
应用程序.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: '*'
引导程序.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"