Tools for observing Kubernetes resources in real time, powered by Pulumi.
APACHE-2.0 License
What happens when you boot up a Pod
? What happens to a Service
before it is allocated a public
IP address? How often is a Deployment
's status changing?
kubespy
is a small tool that makes it easy to observe how Kubernetes resources change in real
time, derived from the work we did to make Kubernetes deployments predictable in Pulumi's CLI. Run kubespy
at any point in time, and it will watch and report information about a
Kubernetes resource continuously until you kill it.
kubespy trace deployment nginx
will "trace" the complex changes a complex Kubernetes resource
makes in the cluster (in this case, a Deployment
called nginx
), and aggregate them into a
high-level summary, which is updated in real time.
kubespy status v1 Pod nginx
will wait for a Pod
called nginx
to be created, and then continuously emit changes made to its .status
field, as syntax-highlighted JSON diffs:
You can install kubespy in the following ways:
Prerequisite: homebrew
brew install kubespy
Get the latest release,
rename it to kubespy
, run chmod +x kubespy
to make it executable and move it in your path (can be /usr/local/bin).
Prerequisite: kubectl v1.12.0 or later
With kubectl v1.12.0 introducing easy pluggability of external functions, kubespy can be invoked as kubectl spy
just by renaming it to kubectl-spy
and having it available in your path.
Prerequisite: Go version 1.19 or later
go install github.com/pulumi/kubespy@latest
kubespy
has four commands:
status <apiVersion> <kind> [<namespace>/]<name>
, which in real time emits all changes made to.status
field of an arbitrary Kubernetes resource, as a JSON diff.changes <apiVersion> <kind> [<namespace>/]<name>
, which in real time emits all changes to anytrace <kind> [<namespace>/]<name>
, which "traces" the changes a complex Kubernetes resourcerecord <apiVersion> <kind> [<namespace>/]<name>
, which in real time emits all changes to anySeveral more commands are planned as well.
For a concrete example you can run using either Pulumi CLI
or kubectl
, check out examples/trivial-pulumi-example.
kubespy status v1 pod <name>
instead ofkubespy status v1 Pod <name>
).Pod
s generated by Deployment
s and ReplicaSet
s).