Kubetap 快速上手:3 条命令代理 Kubernetes Service,ArgoCD 实战演示
【免费下载链接】kubetapKubectl plugin to interactively proxy Kubernetes Services with ease项目地址: https://gitcode.com/gh_mirrors/ku/kubetap
Kubetap是一款开源的kubectl 插件(Kubernetes Service 代理工具)。只需一条kubectl tap on命令,它就能在目标 Service 旁部署 mitmproxy 旁路代理(sidecar),让你实时捕获并检查集群内任意 Service 的流量——无需配置 CNI、无需修改 YAML、无需等待 CI。特别适合调试微服务之间的内网流量,也方便初学者弄清 Kubernetes 集群内请求的走向。
本文以ArgoCD为例,10 分钟带你走完整套流程,掌握tap on、tap list、tap off三条核心命令。
为什么需要 Kubernetes Service 代理工具?
真实集群里,微服务之间的调用关系往往像一团乱麻:
传统做法很繁琐:手动给 Deployment 加 sidecar、patch Service 清单、部署 mitmweb、测试、再全部回滚……或者加几行日志,然后漫长地等 CI。Kubetap 把这一整套流程自动化为一条命令,让深藏技术栈内部、原本难以触碰的微服务也能被轻松代理和观测。
安装 Kubetap:3 种方式任选其一
方式一:krew 一键安装(推荐)
kubectl krew install tap方式二:Homebrew(macOS)
brew tap soluble-ai/homebrew-kubetap brew install kubetap方式三:从源码构建(需 Go 1.14+)
git clone https://gitcode.com/gh_mirrors/ku/kubetap cd kubetap go generate go install ./cmd/kubectl-tap💡 详细安装说明见
docs/getting_started/installation.md;若源码安装后提示unknown command "tap",多半是${GOPATH}/bin未加入PATH,可参考docs/FAQ.md。
安装完成后,Kubetap 以kubectl tap调用,并天然继承--namespace(-n)、--context等常用 kubectl 参数。
ArgoCD 实战演示:3 条命令完成代理
假设 ArgoCD 已安装在集群的argocd命名空间中。
第 1 步:找到目标 Service
先看看 ArgoCD 暴露了哪些 Service:
$ kubectl get svc -n argocd NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE argocd-server ClusterIP 10.43.118.109 <none> 80/TCP,443/TCP 5d20h argocd-repo-server ClusterIP 10.43.192.56 <none> 8081/TCP,8084/TCP 5d20h ...本例代理argocd-server的 HTTPS 服务(443 端口)。
第 2 步:一条命令开启代理(核心命令)
$ kubectl tap on -n argocd -p 443 --https argocd-server --port-forward Establishing port-forward tunnels to service... Port-Forwards: mitmproxy - http://127.0.0.1:2244 argocd-server - http://127.0.0.1:4000这一条命令做了三件事:
- 📦 把mitmproxy以sidecar方式部署到目标 Service 旁(流量不出集群,性能损耗最小)
- 🔗 自动建立 port-forward 隧道,把代理暴露到本地
127.0.0.1:2244 - 🌐 加上
--browser参数还能直接在浏览器中打开代理界面
打开http://127.0.0.1:2244,通过代理访问一次 ArgoCD,所有 API 请求都会实时出现在 mitmproxy 界面中:
第 3 步:查看状态与一键清理
$ kubectl tap list Tapped Namespace/Service: argocd/argocd-server $ kubectl tap off -n argocd argocd-server Untapped Service "argocd-server"代理即刻被移除,Service 完全恢复原状——这正是 Kubetap 区别于手工 patch 清单的最大优势:无侵入、可随时还原。
完整的交互演示(以 Harbor 为目标)见下方动图:
Kubetap 工作原理:sidecar 代理如何生效?
Kubetap 不要求安装 CNI 插件。对某个 Service 执行 tap 后,它会临时注入代理 sidecar(默认 mitmproxy)并重写该 Service 的流量路径,所有经过它的流量都会先汇入代理:
代理流量始终留在集群内部,对线上影响小;tap off之后所有注入内容自动清理。架构与设计的更多细节可参阅docs/README.md。
常见问题与文档导航
| 你可能遇到的情况 | 去哪里看 |
|---|---|
源码安装后提示unknown command "tap" | ${GOPATH}/bin未进 PATH,见docs/FAQ.md |
| 想在容器 / Pod 里直接跑 Kubetap | 使用gcr.io/soluble-oss/kubectl-tap:latest镜像,见docs/getting_started/usage.md |
| 想换 mitmproxy 以外的代理 | 参考proxies/mitmproxy/Dockerfile |
| 完整命令与参数速查 | docs/getting_started/quick-start.md |
小结
- Kubetap是一个 Kubernetes Service 代理工具:kubectl 插件形态,
kubectl tap即可调用 - 三条命令走完实战流程:
kubectl tap on(部署代理)→kubectl tap list(查看状态)→kubectl tap off(清理还原) - mitmproxy sidecar + port-forward 的组合,做到无侵入、秒级清理、零 CNI 配置
有了它,“看不见的内网流量、调不动的微服务”,一条命令就能看得明明白白 👀
【免费下载链接】kubetapKubectl plugin to interactively proxy Kubernetes Services with ease项目地址: https://gitcode.com/gh_mirrors/ku/kubetap
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考