✨ [2025-04-30] 添加本地DEBUG教程
All checks were successful
Publish to Confluence / confluence (push) Successful in 1m0s
All checks were successful
Publish to Confluence / confluence (push) Successful in 1m0s
This commit is contained in:
parent
15bd217cd9
commit
8e77b2f75d
@ -22,49 +22,88 @@
|
||||
<!-- :toc: -->
|
||||
|
||||
# 20250402-使用KtConnect实现本地Debug
|
||||
|
||||
## 前置说明
|
||||
- 快速开始:https://github.com/alibaba/kt-connect/blob/master/docs/zh-cn/guide/quickstart.md
|
||||
## 解决问题
|
||||
- 功能开发完成后无法快速测试验证的问题
|
||||
- Feign无法调用集群服务的问题
|
||||
- 发现BUG后无法本地DEBUG的问题
|
||||
|
||||
## 使用
|
||||
### 下载 kt-connect
|
||||
### 搭配ModHeader食用最佳
|
||||
### 前置说明
|
||||
- 实现本地服务远程调用(feign)集群服务只需要启动 `connect` 即可
|
||||
- 对所有服务生效
|
||||
- 实现集群流量分流到本地(本地DEBUG)只需要启动 `mesh` 即可
|
||||
- 对单个服务生效,每个服务指令不一致
|
||||
- 需要实现完整流程调用则需要启动 connect 和 mesh
|
||||
|
||||
## 快速使用
|
||||
### 1. 下载 kt-connect
|
||||
- 访问 release 页面:https://github.com/alibaba/kt-connect/releases/tag/v0.3.7
|
||||
- 或者直接使用wget下载
|
||||
```shell
|
||||
wget https://github.com/alibaba/kt-connect/releases/download/v0.3.7/ktctl_0.3.7_Windows_x86_64.zip
|
||||
```
|
||||
|
||||
### Mesh 服务
|
||||
用于将指定服务的部分流量重定向到本地。基本用法如下:
|
||||
### 2. 下载 kubectl
|
||||
- 官方下载链接:https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/README.md
|
||||
- 推荐版本:https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#v1276
|
||||
|
||||
```bash
|
||||
ktctl mesh <目标服务名> --expose <本地端口>:<目标服务端口>
|
||||
```
|
||||
### 3. 获取 KubeConfig
|
||||
#### 方法一、找运维获取
|
||||
#### 方法二、通过kubesphere获取
|
||||

|
||||
|
||||
命令可选参数:
|
||||
|
||||
```
|
||||
--mode value 实现流量重定向的路由方式,可选值为 "auto"(默认)和 "manual"
|
||||
--expose value 指定目标服务的一个或多个端口,格式为`port`或`local:remote`,多个端口用逗号分隔,例如:7001,8080:80
|
||||
--versionMark value 指定本地服务路由的版本标签值,格式可以是 `<标签值>`,`<标签名>:` 或 `<标签名>:<标签值>`
|
||||
--skipPortChecking 不必检查指定的本地端口是否有服务监听
|
||||
--routerImage value (仅用于auto模式)指定Router Pod使用的镜像地址
|
||||
```
|
||||
|
||||
关键参数说明:
|
||||
|
||||
- `--mode`提供了两种服务重定向路由的方式。
|
||||
默认的`auto`模式采用Router Pod实现HTTP请求的自动路由,无需额外配置服务网格组件,适用于集群中未部署服务网格的场景。
|
||||
`manual`模式仅将本地服务"混入"集群中,并打上特定的版本Label,开发者自行通过服务网格组件(如Istio)灵活配置路由规则。
|
||||
- `--expose`是一个必须的参数,它的值应当与目标Service的`port`属性值相同,若本地运行服务的端口与目标Service的`port`属性值不一致,则应当使用`<本地端口>:<目标Service端口>`的方式来指定。
|
||||
- `--versionMark`用于指定路由到本地的Header或Label名称和值。默认值为"version:\<随机生成值\>",可仅指定标签值,如`--versionMark demo`;可用标签名加冒号的格式仅指定标签名,如`--versionMark kt-mark:`;也可以同时指定标签的名称和值,如`--versionMark kt-mark:demo`。
|
||||
在`auto`模式下,该值实际上是用于路由的Header。在`manual`模式下,该值为附加在通往本地服务的Shadow Pod上额外的Label。
|
||||
|
||||
#### 例子
|
||||
- KubeConfig 文件需要找运维拿
|
||||
### 4. 使本地服务可以使用serviceId访问服务
|
||||
### 4.1. 启动Connect服务
|
||||
```shell
|
||||
.\ktctl.exe mesh <目标服务名> --namespace qifu --expose <本地端口>:<目标服务端口> --kubeconfig /env/.kube/KubeConfig
|
||||
C:\Programs\Developer\ktctl_0.3.7\ktctl.exe connect --namespace qifu-develop --kubeconfig C:\Documents\Workspace\Env\.kube\kubeconfig.yaml
|
||||
```
|
||||
- 替换 `ktctl.exe` 路径
|
||||
- 替换 `kubeconfig` 路径
|
||||
|
||||
### 5. 使集群请求可以转发到本地(本地DEBUG)
|
||||
#### 5.1. 配置discovery配置为服务名
|
||||
- 由于Nacos里面的服务最后基于ip访问,因此集群内无法通过这种方式来访问本机注册的服务。
|
||||
- 解决:添加 `spring.cloud.nacos.discovery.ip: ${spring.application.name}`
|
||||
- 在discovery下注册指定ip为服务名,这样pod在调ip时会走k8s的服务代理到对应的本机ip
|
||||
|
||||
#### 5.2. 启动本地服务
|
||||
- 直接idea启动本地服务,本地服务端口要和映射端口一致
|
||||
|
||||
#### 5.3. 启动Mesh服务
|
||||
```shell
|
||||
#- 启动mesh
|
||||
C:\Programs\Developer\ktctl_0.3.7\ktctl.exe mesh qifu-saas-eg --namespace qifu-develop --expose 8933:8933 --versionMark ym-version:liuxiaohua --kubeconfig C:\Documents\Workspace\Env\.kube\kubeconfig.yaml
|
||||
```
|
||||
- 替换 `ktctl.exe` 路径
|
||||
- 替换 `kubeconfig` 路径
|
||||
- 替换 `qifu-saas-eg` 为自己的服务名
|
||||
- 替换 `expose` 为自己服务的端口
|
||||
- 替换 `--versionMark ym-version:liuxiaohua` 为自己想要自定义转发的请求头
|
||||
|
||||
#### 5.4. 打开浏览器配置ModHeader
|
||||
##### 添加路由请求头
|
||||
- 路由请求头要和 `--versionMark` 配置的一致
|
||||
|
||||

|
||||
|
||||
#### 5.5. 进行本地DEBUG和问题排查
|
||||
|
||||
|
||||
### 6. 资源清理(异常关闭或Mesh服务无法重新启动问题)(可选)
|
||||
- 正常停止 connect 和 mesh 会自动清理资源
|
||||
- 异常停止资源清理
|
||||
```shell
|
||||
C:\Programs\Developer\ktctl_0.3.7\ktctl.exe clean --namespace qifu-develop
|
||||
|
||||
#- --dryRun 只打印要删除的Kubernetes资源名称,不删除资源
|
||||
#- --thresholdInMinus value 清理至少已失联超过多长时间的Kubernetes资源 (单位:分钟,默认值:15)
|
||||
#- --localOnly 仅清理本地日志和还原本地路由/DNS配置
|
||||
```
|
||||
|
||||
## 参考文档
|
||||
- https://www.cnblogs.com/zhangs1986/p/17003842.html
|
||||
- [ktctl 快速使用文档](https://github.com/alibaba/kt-connect/blob/master/docs/zh-cn/guide/quickstart.md)
|
||||
- [ktctl connect 文档](https://github.com/alibaba/kt-connect/blob/master/docs/zh-cn/cli/connect.md)
|
||||
- [ktctl mesh 文档](https://github.com/alibaba/kt-connect/blob/master/docs/zh-cn/cli/mesh.md)
|
||||
- [ktctl clean 文档](https://github.com/alibaba/kt-connect/blob/master/docs/zh-cn/cli/clean.md)
|
||||
- 别的一些使用文档都可以在上面链接的文件夹中获取
|
||||
- 一些启动问题参考:https://www.cnblogs.com/zhangs1986/p/17003842.html
|
27
草稿/00-本地快捷指令.md
Normal file
27
草稿/00-本地快捷指令.md
Normal file
@ -0,0 +1,27 @@
|
||||
## 本地快捷指令
|
||||
### KT 启动
|
||||
#### 查看集群信息
|
||||
```shell
|
||||
#- 查看集群信息
|
||||
C:\Programs\Developer\ktctl_0.3.7\kubectl.exe cluster-info
|
||||
```
|
||||
|
||||
#### 启动Connect
|
||||
```shell
|
||||
C:\Programs\Developer\ktctl_0.3.7\ktctl.exe connect --namespace qifu-develop --kubeconfig C:\Documents\Workspace\Env\.kube\kubeconfig.yaml
|
||||
```
|
||||
|
||||
#### 启动mesh服务
|
||||
```shell
|
||||
#- 启动mesh
|
||||
C:\Programs\Developer\ktctl_0.3.7\ktctl.exe mesh qifu-saas-eg --namespace qifu-develop --expose 8933:8933 --versionMark ym-version:liuxiaohua --kubeconfig C:\Documents\Workspace\Env\.kube\kubeconfig.yaml
|
||||
```
|
||||
|
||||
#### 资源清理
|
||||
```shell
|
||||
C:\Programs\Developer\ktctl_0.3.7\ktctl.exe clean --namespace qifu-develop
|
||||
|
||||
#- --dryRun 只打印要删除的Kubernetes资源名称,不删除资源
|
||||
#- --thresholdInMinus value 清理至少已失联超过多长时间的Kubernetes资源 (单位:分钟,默认值:15)
|
||||
#- --localOnly 仅清理本地日志和还原本地路由/DNS配置
|
||||
```
|
Loading…
x
Reference in New Issue
Block a user