K8S 部署 SpringCloud2.0 项目完整实践
项目版本情况SpringBoot: 2.0.3.RELEASE<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starte
·
项目版本情况
SpringBoot: 2.0.3.RELEASE
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
</parent>
SpringCloud:Finchley.RELEASE
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
K8S集群版本情况:
NAME STATUS ROLES AGE VERSION
k8s-master-1 Ready master 53d v1.11.0
k8s-node-1 Ready <none> 53d v1.11.0
k8s-node-2 Ready <none> 53d v1.11.0
迁移过程:
1.去除服务注册与发现组件Eureka的引用
k8s由于SERVICE的机制,可以很方便的实现服务发现与负载均衡,在K8S集群中就不再需要eureka做服务发现了。
直接移除掉eureka的maven包即可
<!--eureka client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
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这些配置我们可以不用修改
更多推荐
已为社区贡献2条内容
所有评论(0)