Skip to content

Usage

Kubetap's binary is kubectl-tap. This allows kubetap to be invoked as kubectl tap.

Kubetap inherits many options from the kubectl command, including useful options such as:

--context, --user, --as, etc.

Tap On

Deploy a proxy to tap the target Service, in the case of this example, the argocd-server Service's exposed port 443 which uses HTTPS.

kubectl tap on -n argocd argocd-server -p443 --https

Tap Off

Remove the tap from the argocd-server Service.

kubectl tap off -n argocd argocd-server

Tap List

The namespaces can be constrained with -n, but by default it lists taps in all namespaces:

$ kubectl tap list
Tapped Namespace/Service:

argocd/argocd-server

In a container

It is possible to schedule kubetap as a Pod in Kubernetes using the grc.io/soluble-oss/kubectl-tap:latest container. When run in a cluster, kubetap will automatically detect and use ServiceAccount tokens that are mounted to the container's filesystem.

Additionally, it is possible to run the containers from a developer laptop as follows:

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

Image variations

Kubetap is built on alpine, and available at gcr.io/soluble-ass/kubectl-tap. Images are distributed under two major tags:

Image and tag Description
gcr.io/soluble-oss/kubectl-tap:latest Alpine build and scratch execution environment. Tiny container, no shell.
gcr.io/soluble-oss/kubectl-tap:alpine Alpine build and execution environment. Useful for debugging, has a shell.