当前位置: 首页 > news >正文

Kubetap 集群内运行完整指南:以 Pod 或 Docker 注入 Kubernetes Service 代理的最佳实践

Kubetap 集群内运行完整指南:以 Pod 或 Docker 注入 Kubernetes Service 代理的最佳实践

【免费下载链接】kubetapKubectl plugin to interactively proxy Kubernetes Services with ease项目地址: https://gitcode.com/gh_mirrors/ku/kubetap

Kubetap 是一款 kubectl 插件(kubectl tap),用于在 Kubernetes 集群内以极简方式为目标 Service 部署拦截式代理(Proxy),让你无需修改业务 Deployment、无需引入 CNI 就能"轻点"任意服务流量。本文面向新手,系统讲解 Kubetap 集群内运行的两种姿势:以 Pod 形式部署到集群,以及从本地机器用 Docker 运行

上图展示了 Kubetap 的工作方式:代理(Proxy)作为 Service 与 Pod 之间的一环被"注入"集群,流量经过代理后即可被观察、拦截与转发,而无需改动任何业务代码。

为什么选择 Kubetap 注入代理

传统上要给集群里的 Web 应用做流量拦截测试,流程漫长而繁琐:

  • 手动修改 Deployment 添加 sidecar、打补丁修改 Service、部署 mitmweb、测试、修 bug、回滚……
  • 或者在应用里塞调试日志,等 CI 构建、再翻 Pod 日志 🐛

Kubetap 把这条链路压缩成一条命令:tap on注入代理,tap off清理现场。代理容器(默认 MITMproxy)以 sidecar 方式运行在集群内,流量不出集群,性能损耗更小。更多背景可参考 docs/getting_started/quick-start.md。

方式一:以 Pod 形式注入集群

这是最优雅的玩法:直接把 Kubetap 容器调度到 Kubernetes 中运行。官方镜像为gcr.io/soluble-oss/kubectl-tap:latest,其构建过程见 Dockerfile。

apiVersion: v1 kind: Pod metadata: name: kubetap spec: serviceAccountName: kubetap # 需有集群操作权限 containers: - name: kubetap image: gcr.io/soluble-oss/kubectl-tap:latest args: ["on", "-p80", "myservice"]

🔑关键特性:在集群内运行时,Kubetap 会自动检测并使用挂载到容器文件系统的 ServiceAccount Token,无需手工配置 kubeconfig。只要 ServiceAccount 具备操作目标命名空间的权限,代理即可注入成功。

方式二:从本地用 Docker 运行代理

如果你更习惯在开发机上操作,可以把本机的~/.kube配置以只读方式挂载进容器:

docker run -v "${HOME}/.kube/:/.kube/:ro" \ gcr.io/soluble-oss/kubectl-tap:latest on -p80 myservice

用完之后,用同样的方式"关阀":

docker run -v "${HOME}/.kube/:.kube/:ro" \ gcr.io/soluble-oss/kubectl-tap:latest off myservice

💡 两条命令与kubectl tap的参数完全一致,区别仅在于运行载体是本地 Docker 容器而非集群 Pod。详细说明见 docs/getting_started/usage.md。

选择镜像标签:latest 还是 alpine?

Kubetap 基于 Alpine 构建,提供两类标签,按需选择:

镜像标签说明
gcr.io/soluble-oss/kubectl-tap:latestAlpine 构建 +scratch运行环境,体积极小、无 Shell
gcr.io/soluble-oss/kubectl-tap:alpineAlpine 构建 + Alpine 运行环境,带 Shell,适合调试 🛠️

两个标签分别由 Dockerfile(scratch 版本)与 Dockerfile.alpine 构建,后者保留了交互式 Shell,排障时非常有用。

注入后如何访问代理?

tap on成功后会打印 Port-Forward 隧道地址,浏览器访问http://127.0.0.1:2244即可看到 MITMproxy 的 Web 控制台:

实用参数小贴士:

  • --https:代理 HTTPS 端口(如-p443 --https
  • --port-forward:自动建立端口转发隧道
  • --browser:自动打开浏览器访问代理与目标服务(隐含--port-forward
  • kubectl tap list:列出当前所有活跃代理,可用-n限定命名空间

快速上手命令速查

假设要代理argocd命名空间的argocd-server服务:

kubectl tap on -n argocd -p443 --https argocd-server --port-forward # 注入代理 kubectl tap list # 查看活跃代理 kubectl tap off -n argocd argocd-server # 移除代理

整个过程无需改动任何 Deployment 或 Service 清单,代理注入与清理都由 Kubetap 自动完成。

延伸阅读与源码路径

  • 安装方式(源码 / Homebrew / Krew / 二进制):docs/getting_started/installation.md
  • 使用文档(on / off / list / 容器运行):docs/getting_started/usage.md
  • 代理注入核心逻辑:cmd/kubectl-tap/tap.go
  • MITMproxy 容器入口脚本:proxies/mitmproxy/kubetap-entrypoint.sh
  • 项目镜像构建定义:Dockerfile、Dockerfile.alpine

📌 一句话总结:集群内跑 Pod 最省心(自动识别 ServiceAccount),本地跑 Docker 最灵活(复用你已有的 kubeconfig)——两种注入方式任选其一,Kubetap 都能让 Kubernetes Service 代理"即插即用"。

【免费下载链接】kubetapKubectl plugin to interactively proxy Kubernetes Services with ease项目地址: https://gitcode.com/gh_mirrors/ku/kubetap

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4197796.html

相关文章:

  • IDEA框架:通过效果对齐解决多智能体仿真到现实迁移的动力学不匹配难题
  • 知网二代AI率大面积标红用什么工具,BunnyScholar与清降AI对比
  • 为什么你下载的“Avast破解版“很可能是木马:拆解 Avast-Cracked-Software-Free-Download 仓库的 5 个危险信号
  • JAR如何自动识别当前平台?wasmer-java原生库自加载机制完整剖析
  • 一键备份QQ空间历史说说:GetQzonehistory 完整使用教程
  • 基于SpringBoot的仓库租赁管理系统(源代码+文档+PPT+调试+讲解)
  • G-Helper 调校指南:华硕笔记本 5 分钟上手,彻底告别 Armoury Crate
  • Fillinger随机填充脚本快速上手:5分钟把上百个元素自动铺满任意形状
  • MarkItDown 文档转换实战指南:把 PDF、Word、Excel 变成大模型能读的 Markdown
  • awesome-buggy-erc20-tokens 完全入门指南:一站看懂 32 类 ERC20 合约漏洞与上千个问题代币
  • SwiftOpenAI Response API实战:比Chat Completions更强大的新一代API
  • 暗黑破坏神2角色存档编辑器 Diablo Edit2:免费保姆级教程,从编译到改档全流程
  • 法律AI应用实战:构建安全可靠的合同审查辅助系统
  • nvim-lspconfig Vue 语言服务器完整配置指南:vue_ls 与 vtsls 双服务器 3 场景实战
  • Hedge-Bench:金融智能体的硬核推理基准与实战构建指南
  • go-patterns责任链与中介者模式实战:解耦请求处理与组件通信的2个技巧
  • Lumi原理剖析:Python内省机制如何让函数自动映射为API参数?
  • Chatbox 启动教程:3 分钟搞定 npm 配置与桌面端运行
  • 3步搞定手柄键盘映射:AntiMicroX快速上手指南
  • 从树叶分类到特征工程:经典数学建模案例中的图像识别实战
  • SpaceFM|给 Linux 桌面装上一套多面板文件引擎
  • Arnis 实操教程:把真实城市搬进 Minecraft
  • Llama 3 权重下载完整指南:官方脚本与 Hugging Face 双渠道实操
  • QModMaster:免费完整的Modbus调试工具,新手5分钟连上第一台设备
  • MetricFu源码解析:Generator模板方法模式如何优雅驱动12种指标生成
  • Prism Launcher 离线启动器:十分钟完成 Minecraft 免登录离线启动配置
  • 选对一键生成论文工具告别焦虑夜!高赞工具实测 + 选择避坑
  • C++模板默认参数:提升库易用性与API设计的核心技术
  • 毕业论文选题毫无头绪,有哪些 好用的AI论文平台推荐?
  • 随机信号参数建模实战:AR/MA/ARMA模型原理、算法与应用