Telepresence 2 开发环境配置与调试指南
概述
Telepresence 是一个强大的云原生开发工具,它允许开发者在本地环境中运行服务,同时将这些服务无缝连接到远程 Kubernetes 集群。本文将详细介绍如何配置 Telepresence 2 的开发环境、运行测试以及进行调试。
开发环境配置
必需环境变量
开发 Telepresence 2 需要配置几个关键环境变量:
-
TELEPRESENCE_REGISTRY
:指定 Docker 镜像推送的目标仓库,通常设置为docker.io/用户名
-
TELEPRESENCE_VERSION
:可选,指定编译到二进制和 Docker 镜像中的版本字符串 -
DTEST_KUBECONFIG
:可选,指定测试使用的 Kubernetes 集群配置 -
DTEST_REGISTRY
:可选,指定测试使用的 Docker 镜像仓库
配置文件方式
除了环境变量,也可以通过 itest.yml
文件配置开发环境:
Env:
DEV_TELEPRESENCE_VERSION: v2.12.1-alpha.0
DTEST_KUBECONFIG: /path/to/kubeconfig
构建流程
完整构建流程
最简单的构建方式是执行以下命令:
TELEPRESENCE_REGISTRY=docker.io/用户名 make build push-images
这个命令会:
- 构建可执行二进制文件
- 构建 tel2 和 telepresence Docker 镜像
- 推送镜像到指定仓库
分步构建
也可以分步执行构建过程:
make build # 构建二进制文件
make tel2-image # 构建 tel2 镜像
make client-image # 构建 telepresence 镜像
make push-images # 推送镜像
注意:分步构建时需要手动设置相同的 TELEPRESENCE_VERSION
测试执行
单元测试
运行单元测试:
make check-unit
集成测试
运行集成测试的完整示例:
make private-registry
export DTEST_KUBECONFIG=/path/to/kubeconfig
export DTEST_REGISTRY=localhost:5000
go test ./integration_test/... -v -testify.m=Test_InterceptDetailedOutput
测试优化技巧
使用预构建版本可以显著加快测试速度:
export DEV_TELEPRESENCE_VERSION=v2.12.1-alpha.0
调试技巧
日志系统
Telepresence 有两类日志:
connector.log
:记录用户级后台进程的日志daemon.log
:记录 root 级后台进程的日志
日志位置:
- macOS:
~/Library/Logs/telepresence/
- Linux:
~/.cache/telepresence/logs/
- Windows:
%USERPROFILE%\AppData\Local\logs
实时日志查看
使用 tail 命令实时查看日志:
tail -F ~/.cache/telepresence/logs/connector.log
早期初始化问题调试
对于日志系统初始化前就失败的情况,可以运行:
telepresence connector-foreground | cat
性能分析
启用性能分析
启动 Telepresence 时启用性能分析:
telepresence connect --userd-profiling-port 6060 --rootd-profiling-port 6061
然后可以通过浏览器访问:
- http://localhost:6060/debug/pprof/
- http://localhost:6061/debug/pprof/
协程堆栈分析
发送 SIGQUIT 信号可以获取协程堆栈信息(Windows 不支持)。
RBAC 相关问题
测试 RBAC 功能时,可以创建受限权限用户:
kubectl apply -f k8s/client_rbac.yaml
# 获取并配置测试用户凭证
常见问题解决
构建问题
如果 make generate
报错缺少 go.sum 条目:
cd 报错目录
go mod download 缺失的包
Windows 开发注意事项
Windows 上需要使用 winmake.bat
进行构建:
build-aux\winmake.bat build
总结
本文详细介绍了 Telepresence 2 的开发环境配置、构建流程、测试执行和调试技巧。掌握这些内容后,开发者可以更高效地参与 Telepresence 2 的开发和问题排查工作。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考