微服务上云后本地如何联调?

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

大家好我是飘渺今天给大家带来云原生实战系列的第三十五篇微服务上云后本地如何联调

当我们将微服务上云以后在开发过程中会遇到这样的场景

生产者服务部署到了云上消费者服务还处于开发阶段现在开发人员想在本地启动消费者服务调用云上生产者服务进行接口调试很显然由于生产者和消费者处于不同的网络区间无法互相访问在应用层的表现就是会出现服务调用超时的异常如下所示

ff616bf9bbbef086334655cb916e126f.png

此时为了联调不得不将本地服务也部署到云上显然这对于开发同学来说及其不方便那有没有一种简单高效的办法可以让本地服务跟Kubernetes集群中的服务互通呢这就是今天要解决的问题

解决方案嘛其实也很简单网上已经有现成工具那就是Kt Connect

Kt Connect

Kt Connect是阿里巴巴开源的一款云原生协同开发测试解决方案目前包含以下几个核心功能参加官方文档。https://alibaba.github.io/kt-connect

核心功能

  • 本地直接访问Kubernetes集群内网

通过KtConnect可以直接连接Kubernetes集群内部网络在不修改代码的情况下完成本地联调测试

  • 本地解析Kubernetes服务内网域名

直接使用服务名解析服务Cluster IP本地开发也能获得真正的云原生体验

  • 重定向集群服务流量到本地

将集群中的流量转移到本地使得集群中的服务无需额外配置即可访问本地服务

  • 测试环境多人协作互不干扰

通过自动或手工设定流量规则在不影响测试环境正常使用的情况下仅将指定请求重定向到本地

  • 支持Windows/MacOS/Linux开发环境

不同的操作系统相同的使用方式让所有开发者轻松共享Kubernetes网络互通的便利

Kt Connect 安装使用

下面我们以windows为例介绍一下Kt Connect的安装使用。

1. 安装

1、下载kubectl并解压放入D盘

在此链接中下载kubectl的可执行文件 注意下载对应我们线上kubernetes版本的kubectl 如果想要下载对应其它版本可以修改上面链接将版本号改为对应的即可 。

5bc7820b39bd735838f5aaadeb7abf95.png

2、配置环境变量

将Kt Connect的解压目录D:\kube\添加到PATH环境变量中

dc53908443b59a92a95268895e08ea0f.png

3、执行kubectl version命令查看已安装的 kubectl 版本号

2573a8a3292093349d46715dc0ee9177.png

2. 连接配置

1、 从Kubernets master节点下载集群配置文件kubeconfig

此文件位于master节点中的$HOME/.kube/config

2、将C盘当前用户根目录下创建.kube文件夹并将集群配置文件kubeconfig拷贝到此处

56813bf365f46b9913bc278ba19a5b88.png

3. 连接集群

现在我们想连接kubernetes集群中namespace为workbench的项目可以按照如下操作进行

1、运行命令连接指定集群

#xx为指定项目命名空间
 ktctl --namespace=workbench connect
86152976bda37397b7b9a25df594180c.png

当连接上指定namespace后可以在kubesphere平台看到本地创建的容器

f19f683313086215fa7889b5128b7c21.png

2、 当连接上以后就可以直接在本地访问云上的接口了

直接通过dns访问服务接口

67236ab395c97745c72305269a288a9b.png

使用postman调本地接口通过feign调用集群服务有正常响应

8c5634ea0bf74aebf679fa706e3d1735.png

4. 可能出现的问题

运行 ktctl --namespace=workbench connect 可能会出现hosts权限拒绝

c9c9a29f1ae2afecb4988f22514f9d68.png

解决方案

方法1修改C盘 C:\Windows\System32\drivers\etc\ 此路径下hosts文件权限

在 hosts文件上点击鼠标右键在弹出的选项中点击打开“属性” , 选中用户后点击编辑勾选上下方的“修改”和“写入”权限完成后点击右下角的“应用”再重新运行命令。

682071328da88dc2e319d9d28a2cccf3.png

方法2如果方法1不行在本地新建一个记事本文件将 hosts文件打开全选再复制进新建的记事本中将记事本名修改成hosts替换进C:\Windows\System32\drivers\etc\路径下hosts文件重新运行命令。

- End-

在看、点赞、转发是对我最大的鼓励。您的支持就是我坚持下去的最大动力

另外我的 知识星球 开通了公众号回复关键词 知识星球 获取限量30元优惠券加入每天不到3毛钱。目前更新了SpringCloud alibaba开发实战、Kubernetes云原生实战、设计模式实战、一起学DDD 等....

f5f882fc5a09ec9d493572e7aa549391.jpeg
加我好友拉你进群

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6