Skip to content

ahmetb/kubectl-tree

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

125 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

kubectl tree logo

kubectl tree

A kubectl plugin to explore ownership relationships between Kubernetes objects through ownersReferences on the objects.

The kubectl lineage plugin is very similar to kubectl tree, but it understands logical relationships between some API objects without needing ownerReferences.

Installation

Use krew plugin manager to install:

kubectl krew install tree
kubectl tree --help

Demo

Example (Deployment):

example Kubernetes deployment object hierarchy

Example (Knative Service):

example Kubernetes object hierarchy with Knative Service

Example (Agones Fleet):

example Kubernetes object hierarchy with Agones Fleet

Flags

By default, the plugin searches only namespaced objects in the same namespace as the specified object.

  • -A, --all-namespaces: Search namespaced and non-namespaced objects in all namespaces.

  • -n, --namespace: Namespace scope for the CLI request.

  • -c, --color: Control color output. Supported values are always, never, and auto (default).

  • -l, --selector: Selector (label query) to filter on. Supports equality (=, ==, !=), set-based (in, notin), and existence operators. Examples:

    • -l key1=value1,key2=value2 (equality)
    • -l "env in (prod,staging)" (set-based)
    • -l "tier=frontend,env!=test" (mixed)

    This helps reduce workload and data volume when working with large clusters.

  • --condition-types: Comma-separated list of condition types to check. Default: Ready. Example: Ready,Processed,Scheduled.

  • --api-groups: Comma-separated list of API groups to include in the query. When not set, all API groups are included. Supports globs. Example: --api-groups=core,*cluster.x-k8s.io,!addons.*,*.cert-manager.io.

  • --resources: Comma-separated list of resource types to include in the query. When not set, all resources are included. Supports globs. Example: --resources=deployments,rs,pods.

    Resource filters accept kind, singular, plural, and short names. For example, ReplicaSets, replicasets, replicaset, and rs all match the same resource type.

Using --resources and --api-groups to define what APIs and resources are included or excluded while building the tree can significantly reduce workload and data usage in large clusters. If an intermediate owner resource is filtered out, traversal stops at that point and child resources below it will be missing, even if the leaf resource or API would otherwise match. For example, using --resources=deployments,pods will return nothing because replicasets are not included and pods are not directly owned by deployments.

kubectl tree --api-groups '*.custom.api,*cluster.x-k8s.io' --resources '!customresource' cluster my-cluster

Author

Ahmet Alp Balkan @ahmetb.

Special acknowledgement: This tool is heavily inspired by @nimakaviani's knative-inspect as it's a generalized version of it.

License

Apache 2.0. See LICENSE.


This is not an official Google project.

About

kubectl plugin to browse Kubernetes object hierarchies as a tree 🎄 (star the repo if you are using)

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages