Spring Cloud Kubernetes,网关路由映射

Posted

技术标签:

【中文标题】Spring Cloud Kubernetes,网关路由映射【英文标题】:Spring Cloud Kubernetes, Gateway Route Mapping 【发布时间】:2021-06-16 08:56:15 【问题描述】:

我正在学习 Spring Boot Kubernetes 并尝试为我的服务设置 Spring Cloud Gateway。我相信有了 Spring Cloud Gateway,我们就不必再使用 Ribbon 进行负载平衡了。因此,如果我不使用功能区,那么路线的配置也会发生变化。我查看了网站的建议,以下是我发现的:-

routes:
- id: department_route
  uri: http://departmentservice:4200 # 
  predicates:
  - Path=/* 

在这种情况下,uri 具有服务可用的端口的硬编码值。这是推荐的方法吗?

然后还有另一种配置,看起来像这样,不确定 url-expression 试图做什么:-

spring:
  application.name: gateway
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
          url-expression: "'http://'+serviceId"
  server.port: 8080

难道不能通过名称进行服务发现并在其后附加谓词吗?

【问题讨论】:

第一个是静态配置,第二个是动态配置,它从服务寄存器中查找(在您的情况下为 kubernetes)。 @spencergibb,所以对于第二个我认为应该是推荐的生产方法并且语法应该按原样工作? 我不能说一个比另一个更适合生产,只有一个是静态的,一个是动态的。语法应该有效。 【参考方案1】:

我仍在努力修复 main 的 Spring Cloud Gateway 项目,但以下对我有用。我已经通过 Zuul 配置了路由,因此请确保与它相关的依赖项和配置匹配:-

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-kubernetes-all</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-sleuth</artifactId>
    </dependency>

**Config :: application.yaml ::**

    zuul:
      routes:
        shopping-cart-service:
          path: "/shopping-cart-service/**"
        item-service:
          path: "/item-service/**" 

【讨论】:

以上是关于Spring Cloud Kubernetes,网关路由映射的主要内容,如果未能解决你的问题,请参考以下文章

正在使用 Kubernetes Spring Cloud 多个配置映射

Spring Cloud Kubernetes(二)

spring-cloud-kubernetes官方demo运行实战

部署 spring-cloud-kubernetes kubernetes-hello-world-example 失败

Spring Cloud Kubernetes 支持 Spring Cloud 负载均衡器吗?

存在 spring-cloud-kubernetes 配置映射依赖项的 spring 应用程序启动异常