spring cloud kubernetes 本地开发环境搭建
创始人
2024-01-22 09:38:18
0

背景

在上文Spring Cloud Zookeeper 升级为Spring Cloud Kubernetes 之后,我们由于使用了Kubernetes的服务发现,由于本地不在Kubernetes中,导致本地项目启动失败。所以就只能把代码部署到Kubernetes中才能启动,那么就带来一个新问题,本地如何开发debug呢?

源码

本博客的源码已上传至github,需要自取

  • github: https://github.com/weihubeats/weihubeats_demos/tree/master/spring-cloud-demos/spring-cloud-kubernetes

原理

要先知道本地如何搭建开发环境,就要知道spring cloud kubernetes是如何连接Kubernetes

所以我们进行源码分析一下:
我们启动通过报错log其实可以直接定位到创建Kubernetes client的代码

在这里插入图片描述
可以看到创建ApiClient有两个地方

通过http连接


public static final String ENV_SERVICE_HOST = "KUBERNETES_SERVICE_HOST";
public static final String ENV_SERVICE_PORT = "KUBERNETES_SERVICE_PORT";public static ClientBuilder cluster() throws IOException {final ClientBuilder builder = new ClientBuilder();final String host = System.getenv(ENV_SERVICE_HOST);final String port = System.getenv(ENV_SERVICE_PORT);builder.setBasePath(host, port);builder.setCertificateAuthority(Files.readAllBytes(Paths.get(SERVICEACCOUNT_CA_PATH)));builder.setAuthentication(new TokenFileAuthentication(SERVICEACCOUNT_TOKEN_PATH));return builder;}

可以看到最上面的方式是通过http的方式去创建,获取的hostport都是从环境变量中获取的,如果http方式连接不上就被try catch 然后通过读取配置文件的方式创建ApiClient

通过config配置连接

在这里插入图片描述

本地开发环境搭建

知道原理了之后我们就知道该怎么做了,最简单的方式肯定是会用config去连接。我们参考之前

  • 安装minikube: https://weihubeats.blog.csdn.net/article/details/126353166

安装完并启动minikube
然后我们查看我们的本地配置文件,就会发现自动生成了config配置文件
在这里插入图片描述

然后就可以直接启动项目了,然后发现报错,找不到

在这里插入图片描述

查看源码发现需要配置namespace

首先我们通过kubectl创建一个名为defaultnamespace

kubectl create ns default-namespace

我们在配置一下

  • application.properties
spring.cloud.kubernetes.client.namespace = default
spring.cloud.kubernetes.enabled = true

需要注意一下这里如果引入了依赖spring-cloud-kubernetes-client-config该配置只能在bootstrap中配置才能生效

测试

我们这里本地是启动成功了,写一个获取服务的接口

@RestController
@RequestMapping("/service/v1")
@RequiredArgsConstructor
@Slf4j
public class ServiceController {private final DiscoveryClient discoveryClient;@GetMapping("/service")public List getServiceList(){return discoveryClient.getServices();}
}

调用

GET http://localhost:8090/service/v1/service

成功返回服务列表说明成功了

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...