一 背景
由于最近我大调整了公司的开发环境,开发环境更换上了k8s,有好多同学都想着要怎么连接开发环境的Eureka,因为之前的做法,大部分都是直连开发环境的Eureka,把本地的服务直接注册到开发环境。
但是现在,开发环境的Eureka注册上去的IP都是容器的ip,外部是无法访问的,所以即使把自己的服务注册上去,即使把上面的服务fetch下来,也调不了开发的服务。
所以我们的做法,不是考虑如何连接到开发环境的Eureka,而是通过其他方式替代以前的注册上去的方式。
二 具体做法如下
原本在resources下有以下配置1
2
3
4|--resources
|--application.yaml
|--application-dev.yaml
|--application-prod.yaml
application.yaml 原本如下:1
2
3spring:
profiles:
active: dev
从以上配置可知,以前在本地联调,都是跟发布到开发环境一样,等于是开发环境的一个服务来联调的,这样的弊端是,如果有他人在测试或者前端在联调,则会被受影响。
调整如下:
增加 application-local.yaml
(直接从application-dev.yaml
复制然后修改以下配置)1
2
3
4
5
6
7eureka:
client:
register-with-eureka: false
fetch-registry: false
ribbon.eureka.enabled: false
[feign服务].ribbon.listOfServers: [feign-hostname1]:[port1]
[feign服务].ribbon.listOfServers: [feign-hostname2]:[port2]
application.yaml
调整如下:1
2
3spring:
profiles:
active: local
如此调整,即本地服务不会注册到开发环境的Eureka,也不会从开发环境的Eureka中Fetch服务,而是通过ribbon指定依赖服务的地址,这样也不会影响到开发环境,也能在本地联调。