Spring Cloud Gateway使用K8S (Kubernetes)的云原生服务发现

Spring Cloud Gateway通常使用注册中心作为服务发现,但在Kubernetes里面,由于K8S已经集成了服务注册与发现功能,不必要再另外使用注册中心了,而且,还可以使用K8S的服务监控对服务进行监控。

本来按照网上教程,升级到最新版的springboot3.x,结果发现无法发现服务。后来按着官方指引,终于成功了,现分享给出来。

引进必要的依赖

xml 复制代码
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-kubernetes-fabric8</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-kubernetes-fabric8-loadbalancer</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>

主程序

java 复制代码
@SpringBootApplication
@EnableDiscoveryClient
public class IRMPGatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(IRMPGatewayApplication.class, args);
    }
}

配置

yaml 复制代码
spring:
  cloud:
    gateway:
      routes:
        - id: base-service-route # 路由的id,要保证其唯一性
          uri: lb://irmp-base-service # lb 表示 从nacos 中按照名称获取微服务,并遵循负载均衡策略, report-service 即微服务注册名
          predicates:
            - Path=/base/v2/**  # 使用断言
          filters:
        #            - StripPrefix=1 # 去掉路径前n个前缀
      discovery:
        locator:
          enabled: true
          lower-case-service-id: true
    kubernetes:
      loadbalancer:
        mode: SERVICE
logging:
  level:
    org.springframework.cloud.gateway: trace
相关推荐
阿里云云原生2 小时前
为什么 RAG 落地难?解析数据处理 “三重困境”,事件驱动架构如何破局?
云原生
努力发光的程序员3 小时前
互联网大厂Java面试:从Spring Boot到大数据处理的实战场景问题解析
spring boot·微服务·云原生·java面试·大数据处理·技术解析·互联网求职
热爱学习的小怪兽6 小时前
Docker环境搭建--在ubuntu安装Docker
云原生·eureka
也许是_7 小时前
架构的取舍之道:在微服务的“混乱”中建立秩序
微服务·云原生·架构
橙色云-智橙协同研发10 小时前
【PLM实施专家宝典】离散制造企业需求管理与全生命周期追溯体系构建方案:打造研发的“精准导航系统”
大数据·云原生·云计算·解决方案·数字化转型·plm·国产plm
拾心2120 小时前
【云运维】k8s管理(一)
运维·容器·kubernetes
究極の法則に通じた野犬20 小时前
K8S 本地机器 windows 推送官方镜像到本地镜像仓库 (Docker) -- 以curl镜像为例
docker·容器·kubernetes
cyber_两只龙宝21 小时前
mysql实战项目:keepalived高可用双主架构集群+数据监控(附解析和命令)
linux·运维·mysql·云原生·架构·集群
似水流年 光阴已逝1 天前
用架构图理解k8s系列
云原生·容器·kubernetes
Kt&Rs1 天前
从问题驱动技术的角度对k8s技术的思维层面理解
云原生·容器·kubernetes