{"id":13448952,"url":"https://github.com/soluble-ai/kubetap","last_synced_at":"2026-01-17T08:59:29.586Z","repository":{"id":37089808,"uuid":"265744734","full_name":"soluble-ai/kubetap","owner":"soluble-ai","description":"Kubectl plugin to interactively proxy Kubernetes Services with ease","archived":false,"fork":false,"pushed_at":"2023-08-30T14:16:22.000Z","size":14594,"stargazers_count":496,"open_issues_count":19,"forks_count":44,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-02-15T12:32:44.247Z","etag":null,"topics":["kubectl","kubectl-plugins","kubernetes","mitmproxy","proxy"],"latest_commit_sha":null,"homepage":"https://soluble-ai.github.io/kubetap/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/soluble-ai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-05-21T03:24:37.000Z","updated_at":"2024-02-15T00:25:30.000Z","dependencies_parsed_at":"2024-01-13T12:52:41.446Z","dependency_job_id":"2d21367b-f673-4d67-a6e9-d3bb79f1c7b9","html_url":"https://github.com/soluble-ai/kubetap","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soluble-ai%2Fkubetap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soluble-ai%2Fkubetap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soluble-ai%2Fkubetap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soluble-ai%2Fkubetap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/soluble-ai","download_url":"https://codeload.github.com/soluble-ai/kubetap/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245002964,"owners_count":20545526,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["kubectl","kubectl-plugins","kubernetes","mitmproxy","proxy"],"created_at":"2024-07-31T06:00:26.122Z","updated_at":"2026-01-17T08:59:29.276Z","avatar_url":"https://github.com/soluble-ai.png","language":"Go","funding_links":[],"categories":["Go","Repositories / Tools","HarmonyOS","Diagnostics \u0026 Troubleshooting"],"sub_categories":["Defending","Windows Manager"],"readme":"# Kubetap\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src='docs/img/kubetap.png' class='smallimg' height='600'/\u003e\n\u003c/p\u003e\n\n[![Build status][shield-build-status]][build-status]\n[![Latest release][shield-latest-release]][latest-release]\n[![Go version][shield-go-version]][go-version]\n[![License][shield-license]][license]\n\n## What is Kubetap?\n\nKubetap is a kubectl plugin that enables an operator to easily deploy intercepting\nproxies for Kubernetes Services.\n\n[Here is a video presentation and demo of the project][video].\n\nA short demo of using Kubetap to proxy [Harbor](https://goharbor.io/) is shown below:\n\n![kubetap-demo](./docs/img/kubetap_demo.gif)\n\n## Why Kubetap?\n\nKubetap arose from a need to quickly and efficiently proxy Kubernetes Services\nwithout imposing a CNI mandate.\n\nIt has always been possible to manually: add a sidecar to Deployment manifests, patch\nService manifests, add a mitmweb Service, deploy, test, code push the bugfix,\nremove the sidecar from the Deployment, un-patch the Service, remove the\nmitmweb Service, deploy, and test again....\n\nOr, if you own the app, could build and push some Printf debugging...\nthen wait for CI... then track down the pod to get logs...\n\nBut both of those are long, laborious processes that are ripe for automation.\nThus, Kubetap was born.\n\n## Documentation\n\nThe documentation website, [https://soluble-ai.github.io/kubetap/][kubetap-docs],\ncontains formatted documentation. The documentation site source is available in\nthe [docs folder](docs/README.md), however an abridged documentation is provided\nbelow.\n\n## Installation\n\n### From Source\n\nThe recommended installation method is to clone the repository and run:\n\n```sh\n$ go generate\n\n$ go install ./cmd/kubectl-tap\n```\n\n### Homebrew\n\nSoluble provides a [homebrew formula repository](https://github.com/soluble-ai/homebrew-kubetap).\n\n```sh\nbrew tap soluble-ai/homebrew-kubetap\n\nbrew install kubetap\n```\n\n### Binary Release\n\nBinary releases for Mac (non-notarized), Windows, and Linux of varying\narchitectures are available from the [Releases page](https://github.com/soluble-ai/kubetap/releases).\n\n### With Krew\n\nKubetap can be installed with krew:\n\n```sh\nkubectl krew install tap\n```\n\n## Usage\n\nKubetap's binary is `kubectl-tap`. This makes kubetap a [kubectl plugin][kubectl-plugin],\nallowing it to be invoked as `kubectl tap`.\n\nKubetap inherits many configuration options from `kubectl`, such as: `--context`,\n`--namespace` (or `-n`), `--as`, etc.\n\n### Tap On\n\nDeploy a MITMproxy container to tap the target Service, in the case of this example,\nthe `grafana` Service's exposed port `443`, which uses HTTPS. This uses the\n`--browser` flag (which implies `--port-forward`) to automatically open the\nproxy and target Service in a browser window.\n\n```sh\n$ kubectl tap on grafana -p443 --https --browser\nEstablishing port-forward tunnels to service...\n\nPort-Forwards:\n\n  mitmproxy - http://127.0.0.1:2244\n  grafana - https://127.0.0.1:4000\n\n```\n\n### Tap Off\n\nRemove the tap from the `grafana` Service.\n\n```sh\n$ kubectl tap off grafana\nUntapped Service \"grafana\"\n```\n\n### List Active Taps\n\nThe namespaces can be constrained with `-n`, but by default it lists taps in\nall namespaces:\n\n```sh\n$ kubectl tap list\nTapped Namespace/Service:\n\ndefault/grafana\n```\n\n### In a container\n\nIt is possible to schedule kubetap as a Pod in Kubernetes using the\n`grc.io/soluble-oss/kubectl-tap:latest` container. When run in a cluster,\nkubetap will automatically detect and use serviceaccount tokens that are\nmounted to the container's filesystem.\n\nAdditionally, it is possible to run the containers from a developer laptop as follows:\n\n```sh\ndocker run -v \"${HOME}/.kube/:/.kube/:ro\" 'gcr.io/soluble-oss/kubectl-tap:latest' on -p80 myservice\n```\n\n```sh\ndocker run -v \"${HOME}/.kube/:.kube/:ro\" 'gcr.io/soluble-oss/kubectl-tap:latest' off myservice\n```\n\n## Made by Soluble.ai\n\nThis project was created to compliment the [Soluble platform][soluble].\n\n[Building Kubetap][building-kubetap] is a blog post detailing the creation and implementation of kubetap.\n\n[soluble]: https://www.soluble.ai/\n[kubetap-docs]: https://soluble-ai.github.io/kubetap/\n[shield-go-version]: https://img.shields.io/github/go-mod/go-version/soluble-ai/kubetap\n[shield-build-status]: https://github.com/soluble-ai/kubetap/workflows/kubectl-tap/badge.svg?branch=master\n[shield-latest-release]: https://img.shields.io/github/v/release/soluble-ai/kubetap?include_prereleases\u0026label=release\u0026sort=semver\n[shield-license]: https://img.shields.io/github/license/soluble-ai/kubetap.svg\n[license]: https://github.com/soluble-ai/kubetap/blob/master/LICENSE\n[go-version]: https://github.com/soluble-ai/kubetap/blob/master/go.mod\n[latest-release]: https://github.com/soluble-ai/kubetap/releases\n[build-status]: https://github.com/soluble-ai/kubetap/actions\n[video]: https://www.youtube.com/watch?v=hBroFtlxvkM\n[building-kubetap]: https://www.soluble.ai/blog/building-kubetap\n[kubectl-plugin]: https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoluble-ai%2Fkubetap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoluble-ai%2Fkubetap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoluble-ai%2Fkubetap/lists"}