spring-cloud-openfeign调用kubernates服务
spring-cloud-starter-openfeign应用可以利用openfeign直接调用Eureka里注册的微服务。然而,随着K8S的壮大,大家更加喜欢用K8S来管理自己的微服务,本文分享怎样利用spring-cloud-openfeign客户端调用部署在K8S中的微服务。本文假设微服务已经部署为:http://iisp-base.irmp.ibm.cc/
1. 配置feignClient
@SpringBootApplication
@EnableFeignClients
public class WebApplication {
public static void main(String[] args) {
SpringApplication.run(WebApplication.class, args);
}
@Bean
public Client feignClient() {
return new Client.Default(null, null);
}
@Bean
Logger.Level feignLoggerLevel() {
return Logger.Level.BASIC;
}
}
2. 编写feign客户端
@FeignClient(name = "${spring.service.root}/iisp-base")
public interface BaseServiceRemote extends BaseService {
}
另外,也可以采用FeignClient的url属性,如果有url,则spring openfeign框架不会把URL当作是serviceId去查找的。
@FeignClient(name = "BaseService", url = "${spring.service.root}/iisp-base")
3. 配置服务的根路径
在application.properties中:
spring.service.root=http://router-ip/service
通过上面的配置,当客户端要访问BaseService的API时,服务的URL指向了:
http://router-ip/service/iisp-base/xxxapi…
其中router-ip是微服务路由器的IP地址。
4. 配置apache代理
在微服务路由器上的apache配置文件httpd.conf文件中添加如下的proxy配置:
ProxyPass /service/iisp-base http://iisp-base.irmp.ibm.cc/iisp-base
这样,上面的url就会被转向到:
http://iisp-base.irmp.ibm.cc/iisp-base/xxxapi…
这个地址就是文章开头部署到K8S中的微服务的地址。