The kubectl plugins
repository aims to collect a series of useful kubectl
plugins for enhancing and extending the capabilities of kubectl
. More plugins are planned to be added in the future.
kubectl-watchdiff
is the first plugin in this repository. Its primary function is to monitor changes in Kubernetes resources through watch events and display them in YAML diff format. This plugin is designed to enable users to focus more on the specific changes in resources rather than the entire object event.
- Field Ignoration: Automatically ignores the
resourceVersion
,managedFields
in ObjectMetadata, and thekubectl.kubernetes.io/last-applied-configuration
in annotations. - Custom Ignoration: Allows users to configure specific
keys
inmetadata
labels
andannotations
to be ignored. - Field Focus: Supports using JSONPath expressions to specify fields that users want to focus on, helping to concentrate on specific changes within resources.
Install kubectl-watchdiff
directly from GitHub using the following go install
command:
go install github.com/zoumo/kubectl-plugins/cmd/kubectl-watchdiff@latest
Make sure your $GOPATH/bin
directory is in the system's PATH so that kubectl
can find and execute the kubectl-watchdiff
plugin.
Here are some basic usage examples of kubectl-watchdiff
:
# Monitor changes in all pods within a specified namespace:
kubectl watchdiff pods
# Monitor changes in a single pod:
kubectl watchdiff pod pod1
# Filter pods through label selection:
kubectl watchdiff pods -l app=foo
# Monitor all pods across all namespaces:
kubectl watchdiff pods --all-namespaces
# Ignore certain labels or annotations while comparing:
kubectl watchdiff pods --ignore-annotation-keys=kubectl.kubernetes.io/last-applied-configuration
# Only focus on the status changes of pods:
kubectl watchdiff pods --jsonpaths="$.status"
# Focus on specific annotation changes within pods:
kubectl watchdiff pods --jsonpaths="$.metadata.annotations['github.com/zoumo/kubectl-plugins']"
Feedback, issues, or feature suggestions are welcome by submitting issues or contributing code to the GitHub repository.