尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Kubetap 命令全解:如何用 on / off / list 快速代理任意 Kubernetes Service,附全部隐藏参数

Kubetap 命令全解:如何用 on / off / list 快速代理任意 Kubernetes Service,附全部隐藏参数 Kubetap 命令全解如何用 on / off / list 快速代理任意 Kubernetes Service附全部隐藏参数【免费下载链接】kubetapKubectl plugin to interactively proxy Kubernetes Services with ease项目地址: https://gitcode.com/gh_mirrors/ku/kubetapKubetap 是一个 kubectl 插件能把拦截式代理一键注入到 Kubernetes Service让开发者无需改 CNI、无需手写 Sidecar 就能实时调试集群内的任意服务。本文完整解析kubectl tap on/off/list三大核心命令及全部隐藏参数5 分钟带你玩转这个 Kubernetes 服务代理神器。为什么需要 KubetapKubernetes 服务调试的隐藏痛点在传统方式下想抓取一个 Service 的流量你得手动给 Deployment 加 Sidecar → 修改 Service 清单 → 部署 → 测试 → 修 bug → 移除 Sidecar → 回滚 Service → 再部署……整个流程冗长且极易出错。Kubetap 用3 条命令把这一切自动化命令作用一句话记忆kubectl tap on注入代理 Sidecar 并劫持流量 接上水龙头kubectl tap off移除代理、还原 Service 拧回水龙头kubectl tap list查看全集群已代理的 Service 盘点水龙头30 秒上手安装 kubectl tap 插件的 4 种方式方式一Krew最推荐kubectl krew install tap方式二HomebrewMac 用户首选brew tap soluble-ai/homebrew-kubetap brew install kubetap方式三官方二进制Mac / Windows / Linux 多架构可下载。方式四源码编译克隆仓库后go install ./cmd/kubectl-tap 装完后kubectl tap --help能跑通即成功所有子命令均定义在cmd/kubectl-tap/main.go中。工作原理Kubetap 如何一键接管流量执行tap on时Kubetap 会自动完成 4 件事根据 Service 的 selector 找到对应的 Deployment向 Pod 注入一个 mitmproxy 代理容器Sidecar记录原始目标端口到注解kubetap.io/original-port并把 Service 端口重定向到代理把流量从代理再转发回原目标端口——全程流量不出集群。tap off则是完整逆向操作移除 Sidecar、恢复端口、清除注解不留任何残留。kubectl tap on一键注入代理-p 为必填参数最典型的场景——代理一个 HTTPS 的 Grafana 并自动打开浏览器kubectl tap on grafana -p443 --https --browser输出Establishing port-forward tunnels to service... Port-Forwards: mitmproxy - http://127.0.0.1:2244 grafana - https://127.0.0.1:4000两条本地地址各司其职127.0.0.1:2244—— mitmproxy 的 Web 控制台所有经过代理的流量一目了然127.0.0.1:4000—— 被代理的 Service 本体。不加--port-forward/--browser时命令执行完即返回你需要手动kubectl port-forward svc/grafana 2244:2244访问控制台而加上--port-forward后命令会进入交互态按 CtrlC 会自动执行 off 清理现场非常省心。kubectl tap off一条命令干净卸载代理kubectl tap off grafana Untapped Service grafana它会自动删除 kubetap Sidecar 容器和相关 Volume、移除kubetap.io/tapped注解、将 Service 端口还原到注解中记录的原始目标端口。整个过程无需手工 patch 任何资源。kubectl tap list一眼盘点所有代理状态默认扫描全部命名空间输出命名空间/Servicekubectl tap list Tapped Namespace/Service: argocd/argocd-server加-n可限定命名空间kubectl tap list -n argocd Tapped Services in the argocd namespace: argocd-server隐藏参数速查tap on 的 7 个 Flag 与全局参数以下参数定义见cmd/kubectl-tap/main.go全部作用于tap on参数短写默认值说明--port-p必填要代理的 Service 端口如-p443--image-ikubetap-mitmproxy:latest指定 Sidecar 代理镜像--https-false目标端口走 HTTPS 时必须加--command-args-mitmweb覆盖代理容器的启动参数--port-forward-false自动建立本地端口转发--browser-false自动打开浏览器隐含--port-forward--protocol-http协议类型当前仅支持 http继承自 kubectl 的全局参数Kubetap 内置复用可直接使用-n / --namespace指定命名空间on/off不指定时默认default--context切换集群上下文--user、--as认证用户与模拟身份。另外还有一个鲜少被用的小命令kubectl tap version可打印版本号、commit 与构建时间排查环境问题时很有用。进阶在容器里跑 KubetapKubetap 自身也提供容器镜像可作为 Pod 调度到集群中自动识别挂载的 ServiceAccount 令牌docker run -v ${HOME}/.kube/:.kube/:ro \ gcr.io/soluble-oss/kubectl-tap:latest on -n mynamespace -p80 myservice镜像有latestscratch 环境极简无 shell和alpine带 shell方便调试两种标签。排错指南4 个高频错误与解决方法报错原因解决the target Service has already been tapped该 Service 已被代理先kubectl tap off再重新 onthe provided Namespace does not exist命名空间拼写错误检查-n及kubectl config current-context--port flag not provided漏了必填参数tap on必须带-p端口unknown command tap for kubectl源码安装后${GOPATH}/bin不在 PATH在.zshrc中追加export PATH${GOPATH}/bin:${PATH}⚠️ 注意tap on中途失败如 Deployment 更新冲突时Kubetap 会自动回滚已做的修改不用担心留下半成品现场。小结Kubetap 的命令设计极为克制on注入、off还原、list盘点配合-p、--https、--browser等隐藏参数覆盖了绝大多数 Kubernetes 服务代理调试场景。掌握本文速查表后你基本可以把它当作集群调试的瑞士军刀随手取用。【免费下载链接】kubetapKubectl plugin to interactively proxy Kubernetes Services with ease项目地址: https://gitcode.com/gh_mirrors/ku/kubetap创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表