K8S 部署 SpringCloud2.0 项目完整实践

项目版本情况

SpringBoot: 2.0.3.RELEASE


        org.springframework.boot
        spring-boot-starter-parent
        2.0.3.RELEASE

SpringCloud:Finchley.RELEASE

Finchley.RELEASE

K8S集群版本情况:

NAME           STATUS   ROLES    AGE   VERSION
k8s-master-1   Ready    master   53d   v1.11.0
k8s-node-1     Ready       53d   v1.11.0
k8s-node-2     Ready       53d   v1.11.0

迁移过程:

1.去除服务注册与发现组件Eureka的引用

k8s由于SERVICE的机制,可以很方便的实现服务发现与负载均衡,在K8S集群中就不再需要eureka做服务发现了。
直接移除掉eureka的maven包即可


        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        

2.修改FeignClient

原先由于eureka的存在,我们在feignClient中可以直接根据服务名来调用服务,现在需要配置服务的URL
如下所示

@FeignClient(name = "user-service",url = "${URL.USER_SERVICE}")

我这里的url配置在了环境变量里,根据服务环境动态读取,之所以这么做的原因后面会介绍。

3.配置中心改造

K8S配置中心可以通过ConfigMap实现。但是我这边由于特殊原因,依然采用SpringCloud 的原生组件Config作为配置中心,但是相应的配置需要修改。

如下是每个微服务的bootstrap.yml的内容

spring:
  application:
    name: user-service
  cloud:
    config:
      fail-fast: true
      retry:
        max-attempts: 10
        max-interval: 10000
        initial-interval: 1000
      profile: ${SPRING_CLOUD_CONFIG_PROFILE:local}
      username: "admin"
      password: "123"
      uri: ${SPRING_CLOUD_CONFIG_URI:http://admin:123@localhost:8888}

可以看到配置中心地址与profile都是采用了环境变量的方式读取的。

下面改造配置中心

原先的数据库,redis,rabbitMQ这些配置我们可以不用修改

你可能感兴趣的:(kubernetes)