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,managedFieldsin ObjectMetadata, and thekubectl.kubernetes.io/last-applied-configurationin annotations. - Custom Ignoration: Allows users to configure specific
keysinmetadatalabelsandannotationsto 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@latestMake 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.