地址: https://github.com/alibaba/kt-connect/releases
cd /root/.kube
下载服务器的`config`文件
C:\Users\yangx
mkdir .kube
C:\Users\yangx\.kube
C:\Users\yangx\.kube
.\ktctl.exe connect
这样代理就成功了
KtConnect提供了两种能够让集群流量重定向到本地服务的命令,在使用场景上稍有不同。
Exchange命令
将集群里访问指定服务的所有请求拦截并转发到本地的指定端口。通常用于调试在测试环境里,调试位于业务调用链中间环节的特定服务。
┌──────────┐ ┌─ ── ── ── ┌──────────┐
│ ServiceA ├─┬─►x│ ServiceB │ ┌─►│ ServiceC │
└──────────┘ │ ── ── ── ─┘ │ └──────────┘exchange ││ ┌──────────┐ │└──►│ ServiceB'├─┘ (本地服务实例)└──────────┘
使用ktctl exchange
命令将先前部署到集群中的tomcat
服务流量全部转到本地8080
端口:
$ ktctl exchange tomcat -n dev --expose 8080
-n dev:是指命名空间 dev
当出现如下图,则表示成功
Mesh命令
将集群里访问指定服务的部分请求拦截并转发到本地的指定端口。通常用于团队协作时,需要定向调试调用链中间位置的服务,又不希望影响其他开发者正常使用测试环境的场景。
┌──────────┐ ┌──────────┐ ┌──────────┐
│ ServiceA ├─┬──►│ ServiceB │─┬─►│ ServiceC │
└──────────┘ │ └──────────┘ │ └──────────┘mesh ││ ┌──────────┐ │└──►│ ServiceB'├─┘ (本地服务实例)└──────────┘
Mesh命令有两种运行模式,默认的auto
模式不需要额外的服务网格组件,能够直接实现HTTP请求的自动按需路由。
ktctl mesh tomcat --expose 8080
00:00AM INF KtConnect start at
... ...
--------------------------------------------------------------Now you can access your service by header 'VERSION: feo3x'
--------------------------------------------------------------
若请求包含Mesh命令输出的Header,则流量将自动被本地的服务实例接收。
$ curl -H 'VERSION: feo3x' http://tomcat:8080
总结
ktctl exchange
与ktctl mesh
命令的最大区别在于,前者会将原应用实例流量全部替换为由本地服务接收,而后者仅将包含指定Header的流量导流到本地,同时保证测试环境正常链路始终可用。
除了已经部署到集群的服务,在开发过程中,也可以利用KtConnect将本地服务快速"放"到集群,变成一个临时的服务,供其他开发者或集群中的其他服务使用。
Preview命令
将本地运行的服务实例注册到集群上。主要用于将本地开发中的服务提供给其他开发者进行联调和预览。
使用ktctl preview
命令将运行在本地8080
端口的服务注册到测试集群,命名为tomcat-v2
。
$ ktctl preview tomcat-v2 --expose 8080
00:00AM INF KtConnect start at
... ...
---------------------------------------------------------------Now you can access your local service in cluster by name 'tomcat-v2'
---------------------------------------------------------------
现在集群里的服务就可以通过tomcat-v2
名称来访问本地注册的服务实例了,其他开发者也可以在执行ktctl connect
后,直接通过tomcat-v2
服务名称来预览该服务的实时情况:
$ curl http://tomcat-v2:8080
kt-connect local v2
Forward命令
将任意IP或集群中的服务映射到本地的指定端口。用于在测试时,使用localhost
地址便捷的访问集群中的特定IP或服务,典型场景是是访问其他开发者通过Preview命令注册的本地服务。
┌─────────────────────────────┐forward | preview
┌────────┴───────┐ | ┌───────▼──────┐
│ localhost:8080 │ | │ local tomcat │
└────────────────┘ | └──────────────┘开发者 B | 开发者 A
例如当一个开发者A运行了前述的Preview命令后,另一个开发者B可以使用ktctl forward
命令将它映射到自己本地的6060
端口。
$ ktctl forward tomcat-v2 6060:8080
00:00AM INF KtConnect start at
... ...
---------------------------------------------------------------Now you can access port 8080 of service 'tomcat-v2' via 'localhost:6060'
---------------------------------------------------------------
现在开发者B就可以使用localhost:6060
地址访问到开发者A本地运行的Tomcat服务了。
当映射的流量源是集群中的服务名时,其效果与kubectl port-forward
命令相似,只是额外增加了断网自动重连的能力。
上一篇:三端sonar记录