{"id":13644330,"url":"https://github.com/tohjustin/kube-lineage","last_synced_at":"2025-04-04T12:07:00.932Z","repository":{"id":37483762,"uuid":"397617980","full_name":"tohjustin/kube-lineage","owner":"tohjustin","description":"A CLI tool to display all dependencies or dependents of an object in a Kubernetes cluster.","archived":false,"fork":false,"pushed_at":"2024-07-07T13:31:43.000Z","size":963,"stargazers_count":418,"open_issues_count":9,"forks_count":27,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-28T11:08:49.059Z","etag":null,"topics":["dependency","dependent","helm","k8s","kubectl","kubectl-plugin","kubectl-plugins","kubernetes"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tohjustin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-18T13:51:40.000Z","updated_at":"2025-03-19T07:02:32.000Z","dependencies_parsed_at":"2024-06-20T02:57:41.663Z","dependency_job_id":"c23e1530-4795-42c1-a11b-4f3282bb39da","html_url":"https://github.com/tohjustin/kube-lineage","commit_stats":{"total_commits":167,"total_committers":3,"mean_commits":"55.666666666666664","dds":0.0119760479041916,"last_synced_commit":"1a6f1a22377ead7aa2467e40ce584daf3ab9bf1d"},"previous_names":["tohjustin/kubectl-lineage"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tohjustin%2Fkube-lineage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tohjustin%2Fkube-lineage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tohjustin%2Fkube-lineage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tohjustin%2Fkube-lineage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tohjustin","download_url":"https://codeload.github.com/tohjustin/kube-lineage/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247174416,"owners_count":20896078,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dependency","dependent","helm","k8s","kubectl","kubectl-plugin","kubectl-plugins","kubernetes"],"created_at":"2024-08-02T01:02:01.387Z","updated_at":"2025-04-04T12:07:00.902Z","avatar_url":"https://github.com/tohjustin.png","language":"Go","funding_links":[],"categories":["Diagnostics \u0026 Troubleshooting","Go"],"sub_categories":[],"readme":"# kube-lineage\n\n[![build](https://github.com/tohjustin/kube-lineage/actions/workflows/build.yaml/badge.svg)](https://github.com/tohjustin/kube-lineage/actions/workflows/build.yaml)\n[![release](https://aegisbadges.appspot.com/static?subject=release\u0026status=v0.5.0\u0026color=318FE0)](https://github.com/tohjustin/kube-lineage/releases)\n[![kubernetes compatibility](https://aegisbadges.appspot.com/static?subject=k8s%20compatibility\u0026status=v1.21%2B\u0026color=318FE0)](https://endoflife.date/kubernetes)\n[![helm compatibility](https://aegisbadges.appspot.com/static?subject=helm%20compatibility\u0026status=v3\u0026color=318FE0)](https://helm.sh/docs/topics/v2_v3_migration)\n[![license](https://aegisbadges.appspot.com/static?subject=license\u0026status=Apache-2.0\u0026color=318FE0)](./LICENSE.md)\n\nA CLI tool to display all dependencies or dependents of an object in a Kubernetes cluster.\n\n## Usage\n\n```shell\n$ kube-lineage clusterrole system:metrics-server --output=wide\nNAMESPACE     NAME                                                               READY   STATUS    AGE   RELATIONSHIPS\n              ClusterRole/system:metrics-server                                  -                 30m   []\n              └── ClusterRoleBinding/system:metrics-server                       -                 30m   [ClusterRoleBindingRole]\nkube-system       └── ServiceAccount/metrics-server                              -                 30m   [ClusterRoleBindingSubject]\nkube-system           ├── Pod/metrics-server-7b4f8b595-8m7rz                     1/1     Running   30m   [PodServiceAccount]\nkube-system           │   └── Service/metrics-server                             -                 30m   [Service]\n                      │       ├── APIService/v1beta1.metrics.k8s.io              True              30m   [APIService]\nkube-system           │       └── EndpointSlice.discovery/metrics-server-wb2cm   -                 30m   [ControllerReference OwnerReference]\nkube-system           └── Secret/metrics-server-token-nqw85                      -                 30m   [ServiceAccountSecret]\nkube-system               └── Pod/metrics-server-7b4f8b595-8m7rz                 1/1     Running   30m   [PodVolume]\n```\n\nUse either the `--dependencies` or `-D` flag to show dependencies instead of dependents\n\n```shell\n$ kube-lineage pod coredns-5cc79d4bf5-xgvkc --dependencies\nNAMESPACE     NAME                                                                   READY   STATUS         AGE\nkube-system   Pod/coredns-5cc79d4bf5-xgvkc                                           1/1     Running        30m\n              ├── Node/k3d-server                                                    True    KubeletReady   30m\n              ├── PodSecurityPolicy/system-unrestricted-psp                          -                      30m\nkube-system   ├── ConfigMap/coredns                                                  -                      30m\nkube-system   ├── ReplicaSet/coredns-5cc79d4bf5                                      1/1                    30m\nkube-system   │   └── Deployment/coredns                                             1/1                    30m\nkube-system   ├── Secret/coredns-token-6vsx4                                         -                      30m\nkube-system   │   └── ServiceAccount/coredns                                         -                      30m\n              │       ├── ClusterRoleBinding/system:basic-user                       -                      30m\n              │       │   └── ClusterRole/system:basic-user                          -                      30m\n              │       ├── ClusterRoleBinding/system:coredns                          -                      30m\n              │       │   └── ClusterRole/system:coredns                             -                      30m\n              │       ├── ClusterRoleBinding/system:discovery                        -                      30m\n              │       │   └── ClusterRole/system:discovery                           -                      30m\n              │       ├── ClusterRoleBinding/system:public-info-viewer               -                      30m\n              │       │   └── ClusterRole/system:public-info-viewer                  -                      30m\nkube-system   │       └── RoleBinding/system-unrestricted-svc-acct-psp-rolebinding   -                      30m\n              │           └── ClusterRole/system-unrestricted-psp-role               -                      30m\n              │               └── PodSecurityPolicy/system-unrestricted-psp          -                      30m\nkube-system   └── ServiceAccount/coredns                                             -                      30m\n```\n\nUse the `helm` subcommand to display Helm release resources \u0026 optionally their respective dependents in a Kubernetes cluster.\n\n```shell\n$ kube-lineage helm kube-state-metrics -n monitoring-system\nhelm kube-state-metrics -n monitoring-system\nNAMESPACE           NAME                                                             READY   STATUS     AGE\nmonitoring-system   kube-state-metrics                                               True    Deployed   25m\n                    ├── ClusterRole/kube-state-metrics                               -                  25m\n                    │   └── ClusterRoleBinding/kube-state-metrics                    -                  25m\nmonitoring-system   │       └── ServiceAccount/kube-state-metrics                    -                  25m\nmonitoring-system   │           ├── Pod/kube-state-metrics-7dff544777-jb2q2          1/1     Running    25m\nmonitoring-system   │           │   └── Service/kube-state-metrics                   -                  25m\nmonitoring-system   │           │       └── EndpointSlice/kube-state-metrics-rq8wk   -                  25m\nmonitoring-system   │           └── Secret/kube-state-metrics-token-bsr4q            -                  25m\nmonitoring-system   │               └── Pod/kube-state-metrics-7dff544777-jb2q2      1/1     Running    25m\n                    ├── ClusterRoleBinding/kube-state-metrics                        -                  25m\nmonitoring-system   ├── Deployment/kube-state-metrics                                1/1                25m\nmonitoring-system   │   └── ReplicaSet/kube-state-metrics-7dff544777                 1/1                25m\nmonitoring-system   │       └── Pod/kube-state-metrics-7dff544777-jb2q2              1/1     Running    25m\nmonitoring-system   ├── Secret/sh.helm.release.v1.kube-state-metrics.v1              -                  25m\nmonitoring-system   ├── Service/kube-state-metrics                                   -                  25m\nmonitoring-system   └── ServiceAccount/kube-state-metrics\n\n$ kube-lineage helm traefik --depth 1 --label-columns app.kubernetes.io/managed-by --label-columns owner\nNAMESPACE     NAME                                       READY   STATUS     AGE   MANAGED-BY   OWNER\nkube-system   traefik                                    True    Deployed   30m\n              ├── ClusterRole/traefik                    -                  30m   Helm\n              ├── ClusterRoleBinding/traefik             -                  30m   Helm\nkube-system   ├── ConfigMap/traefik                      -                  30m   Helm\nkube-system   ├── ConfigMap/traefik-test                 -                  30m   Helm\nkube-system   ├── Deployment/traefik                     1/1                30m   Helm\nkube-system   ├── Secret/sh.helm.release.v1.traefik.v1   -                  30m                helm\nkube-system   ├── Secret/traefik-default-cert            -                  30m   Helm\nkube-system   ├── Service/traefik                        -                  30m   Helm\nkube-system   ├── Service/traefik-prometheus             -                  30m   Helm\nkube-system   └── ServiceAccount/traefik                 -                  30m   Helm\n```\n\nUse either the `split` or `split-wide` output format to display resources grouped by their type.\n\n```shell\n$ kube-lineage deploy/coredns --output=split --show-group\nNAME                      READY   UP-TO-DATE   AVAILABLE   AGE\ndeployment.apps/coredns   3/3     3            3           30m\n\nNAME                                            ADDRESSTYPE   PORTS        ENDPOINTS                          AGE\nendpointslice.discovery.k8s.io/kube-dns-mz9bw   IPv4          53,9153,53   10.42.0.24,10.42.0.26,10.42.0.27   30m\n\nNAME                           READY   STATUS    RESTARTS   AGE\npod/coredns-5cc79d4bf5-xgvkc   1/1     Running   0          30m\npod/coredns-5cc79d4bf5-rjc7d   1/1     Running   0          30m\npod/coredns-5cc79d4bf5-tt2zl   1/1     Running   0          30m\n\nNAME                                 DESIRED   CURRENT   READY   AGE\nreplicaset.apps/coredns-5cc79d4bf5   3         3         3       30m\n\nNAME               TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE\nservice/kube-dns   ClusterIP   10.43.0.10   \u003cnone\u003e        53/UDP,53/TCP,9153/TCP   30m\n```\n\n### Flags\n\nFlags for configuring relationship discovery parameters\n\n| Flag | Description |\n| ---- | ----------- |\n| `--all-namespaces`, `-A` | If present, list object relationships across all namespaces |\n| `--dependencies`, `-D`   | If present, list object dependencies instead of dependents. \u003cbr/\u003e Not supported in `helm` subcommand |\n| `--depth`, `-d`          | Maximum depth to find relationships |\n| `--exclude-types`        | Accepts a comma separated list of resource types to exclude from relationship discovery. \u003cbr/\u003e You can also use multiple flag options like --exclude-types type1 --exclude-types type2... |\n| `--include-types`        | Accepts a comma separated list of resource types to only include in relationship discovery. \u003cbr/\u003e You can also use multiple flag options like --include-types type1 --include-types type2... |\n| `--scopes`, `-S`         | Accepts a comma separated list of additional namespaces to find relationships. \u003cbr/\u003e You can also use multiple flag options like -S namespace1 -S namespace2... |\n\nFlags for configuring output format\n\n| Flag | Description |\n| ---- | ----------- |\n| `--output`, `-o`        | Output format. One of: wide \\| split \\| split-wide |\n| `--label-columns`, `-L` | Accepts a comma separated list of labels that are going to be presented as columns. \u003cbr/\u003e You can also use multiple flag options like -L label1 -L label2... |\n| `--no-headers`          | When using the default output format, don't print headers |\n| `--show-group`          | If present, include the resource group for the requested object(s) |\n| `--show-label`          | When printing, show all labels as the last column |\n| `--show-namespace`      | When printing, show namespace as the first column |\n\nUse the following commands to view the full list of supported flags\n\n```shell\n$ kube-lineage --help\n$ kube-lineage helm --help\n```\n\n## Supported Relationships\n\nList of supported relationships used for discovering dependent objects:\n\n- Kubernetes\n  - [Controller](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/controller-ref.md) \u0026 [Owner](https://kubernetes.io/docs/concepts/overview/working-with-objects/owners-dependents/) References\n  - Core APIs: [Event](https://kubernetes.io/docs/reference/kubernetes-api/cluster-resources/event-v1/), [PersistentVolume](https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-v1/), [PersistentVolumeClaim](https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-claim-v1/), [Pod](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/), [Service](https://kubernetes.io/docs/reference/kubernetes-api/service-resources/service-v1/), [ServiceAccount](https://kubernetes.io/docs/reference/kubernetes-api/authentication-resources/service-account-v1/)\n  - `policy` APIs: [PodDisruptionBudget](https://kubernetes.io/docs/reference/kubernetes-api/policy-resources/pod-disruption-budget-v1), [PodSecurityPolicy](https://kubernetes.io/docs/reference/kubernetes-api/policy-resources/pod-disruption-budget-v1/)\n  - `admissionregistration.k8s.io` APIs: [MutatingWebhookConfiguration](https://kubernetes.io/docs/reference/kubernetes-api/extend-resources/mutating-webhook-configuration-v1/) \u0026 [ValidatingWebhookConfiguration](https://kubernetes.io/docs/reference/kubernetes-api/extend-resources/validating-webhook-configuration-v1/)\n  - `apiregistration.k8s.io` APIs: [APIService](https://kubernetes.io/docs/reference/kubernetes-api/cluster-resources/api-service-v1/)\n  - `networking.k8s.io` APIs: [Ingress](https://kubernetes.io/docs/reference/kubernetes-api/service-resources/ingress-v1/), [IngressClass](https://kubernetes.io/docs/reference/kubernetes-api/service-resources/ingress-class-v1/), [NetworkPolicy](https://kubernetes.io/docs/reference/kubernetes-api/policy-resources/network-policy-v1/)\n  - `node.k8s.io` APIs: [RuntimeClass](https://kubernetes.io/docs/reference/kubernetes-api/cluster-resources/runtime-class-v1/)\n  - `rbac.authorization.k8s.io` APIs: [ClusterRole](https://kubernetes.io/docs/reference/kubernetes-api/authorization-resources/cluster-role-v1/), [ClusterRoleBinding](https://kubernetes.io/docs/reference/kubernetes-api/authorization-resources/cluster-role-binding-v1/), [Role](https://kubernetes.io/docs/reference/kubernetes-api/authorization-resources/role-v1/), [RoleBinding](https://kubernetes.io/docs/reference/kubernetes-api/authorization-resources/role-binding-v1/)\n  - `storage.k8s.io` APIs: [CSINode](https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/csi-node-v1/), [CSIStorageCapacity](https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/csi-storage-capacity-v1beta1/), [StorageClass](https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/storage-class-v1/), [VolumeAttachment](https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/volume-attachment-v1/)\n- Helm\n  - [Helm Release](https://helm.sh/docs/intro/using_helm/#three-big-concepts)\n  - [Helm Storage](https://helm.sh/docs/topics/advanced/#storage-backends)\n\n## Installation\n\n### Install via [krew](https://krew.sigs.k8s.io/)\n\n```shell\n$ kubectl krew install lineage\n\n$ kubectl lineage --version\n```\n\n### Install from Source\n\n```shell\n$ git clone git@github.com:tohjustin/kube-lineage.git \u0026\u0026 cd kube-lineage\n$ make install\n\n$ kube-lineage --version\n```\n\n## Prior Art\n\nkube-lineage has been inspired by the following projects:\n\n- [ahmetb/kubectl-tree](https://github.com/ahmetb/kubectl-tree)\n- [feloy/kubectl-service-tree](https://github.com/feloy/kubectl-service-tree)\n- [nimakaviani/knative-inspect](https://github.com/nimakaviani/knative-inspect/)\n- [steveteuber/kubectl-graph](https://github.com/steveteuber/kubectl-graph)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftohjustin%2Fkube-lineage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftohjustin%2Fkube-lineage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftohjustin%2Fkube-lineage/lists"}