k8s云原生之kt-connect

背景

微服务项目,有 A B C 三个模块,对A 进行开发,开发完编译images,部署一条龙ok没问题万事大吉,但往往会出问题…再来一次…麻烦效率低。假如在本地running 直接调用 B C 服务,打通本地与测试环境 k8s 集群的 service 互联互通,开发起来就 soeasy 了

介绍

KtConnect是阿里巴巴开源的一个工具,提供了本地和测试环境集群的双向互联能力。

安装

KtConnect 为 golang 开发,编译后直接是一个可执行文件,按照对应系统下载后解压即可直接使用,下载地址
解压至 tar-zxvf ktctl_xxxxx.tar.gz -C /usr/local/bin/

使用

本地连接测试集群接入 nacos

  1. 将 k8s master 下的 ~/.kube/config copy 到本机
  2. 执行命令
sudo ktctl connect --kubeconfig ~/config  -i xxxxx/jenkins/kt-connect-shadow:v0.3.7 --excludeIps 192.168.1.1/16 
# 正常启动
6:49PM INF Route to tun device completed
6:49PM INF Setting up dns in local mode
6:49PM INF Port forward local:9117 -> pod kt-connect-shadow-qlmnb:53 established
6:49PM INF Setup local DNS with upstream [tcp:127.0.0.1:9117 udp:10.30.52.44:53]
6:49PM INF Creating udp dns on port 10053
6:49PM INF ---------------------------------------------------------------
6:49PM INF  All looks good, now you can access to resources in the kubernetes cluster
6:49PM INF ---------------------------------------------------------------

###### 配置项
--kubeconfig ~/config  # k8s 文件
-i xxxxx/jenkins/kt-connect-shadow:v0.3.7 # 默认是访问 registry.cn-hangzhou.aliyuncs.com/rdc-incubator/kt-connect-shadow:v0.3.7,可以使用 docker save\load 处理,较麻烦,更推荐是docker tag\push 推送到公司内网的 registry 上
--excludeIps 192.168.1.1/16 # 忽略IP,避免出现无法访问其他组价,如 mysql。

至此,就可以使用 service:port 访问集群上的对应服务了,也可以正常走 nacos 服务调用

服务流量转发

在本地运行,也会将服务注册到 nacos 上,当你做 debug,刚好请求分发到本地服务上,对其他同学会有影响。这里可以使用 ktctl mesh 根据 header 做流量转发

ktctl mesh --kubeconfig ~/config -i xxx/jenkins/kt-connect-shadow:v0.3.7 data-source --expose 8081:8080 --routerImage xxx/jenkins/kt-connect-router:v0.3.7 

# 启动成功
7:09PM INF Reverse tunnel 0.0.0.0:8081 -> 127.0.0.1:8081 established
7:09PM INF ---------------------------------------------------------------
7:09PM INF  Now you can access your service by header 'VERSION: xoybh' 
7:09PM INF ---------------------------------------------------------------
7:09PM INF Service dam-wmodeling unlocked
--kubeconfig ~/config # 同上
-i # 同上
--expose 8081:8080  # 本地服务端口:目标服务端口
--routerImage xxx/jenkins/kt-connect-router:v0.3.7  # 类似 -i, 指定另一个mesh 功能的docker镜像
测试
#  -H "VERSION: xoybh" 是执行 mesh 后输出的 head 密码
curl -X GET "http://data-source:8080/service-api/enum/compareType" -H "accept: */*" -H "x-tenant-id: tt" -H "VERSION: xoybh"

详细参数配置使用查看官方文档
KtConnect Docs

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值