diff --git a/README.md b/README.md index f5d37681..d13577f7 100644 --- a/README.md +++ b/README.md @@ -6,16 +6,16 @@ Kor is a tool to discover unused Kubernetes resources. Currently, Kor can identify and list unused: - ConfigMaps -- Secrets. +- Secrets - Services - ServiceAccounts - Deployments - StatefulSets - Roles -- Hpas -- Pvcs +- HPAs +- PVCs - Ingresses -- Pdbs +- PDBs ![Kor Screenshot](/images/screenshot.png) @@ -23,7 +23,7 @@ Kor is a tool to discover unused Kubernetes resources. Currently, Kor can identi Download the binary for your operating system from the [releases page](https://github.com/yonahd/kor/releases) and add it to your system's PATH. -For MacOS users, you can install Kor using Homebrew: +For macOS users, you can install Kor using Homebrew: ```sh brew install kor ``` @@ -32,26 +32,26 @@ brew install kor Kor provides various subcommands to identify and list unused resources. The available commands are: -- `all`: Gets all unused resources for the specified namespace or all namespaces. -- `configmap`: Gets unused configmaps for the specified namespace or all namespaces. -- `secret`: Gets unused secrets for the specified namespace or all namespaces. -- `services`: Gets unused services for the specified namespace or all namespaces. -- `serviceaccount`: Gets unused service accounts for the specified namespace or all namespaces. -- `deployments`: Gets unused service accounts for the specified namespace or all namespaces. -- `statefulsets`: Gets unused service accounts for the specified namespace or all namespaces. -- `role`: Gets unused roles for the specified namespace or all namespaces. -- `hpa`: Gets unused hpa for the specified namespace or all namespaces. -- `pvc`: Gets unused pvcs for the specified namespace or all namespaces. -- `ingress`: Gets unused ingresses for the specified namespace or all namespaces. -- `pdb`: Gets unused pdbs for the specified namespace or all namespaces. +- `all` - Gets all unused resources for the specified namespace or all namespaces. +- `configmap` - Gets unused ConfigMaps for the specified namespace or all namespaces. +- `secret` - Gets unused Secrets for the specified namespace or all namespaces. +- `services` - Gets unused Services for the specified namespace or all namespaces. +- `serviceaccount` - Gets unused ServiceAccounts for the specified namespace or all namespaces. +- `deployments` - Gets unused Deployments for the specified namespace or all namespaces. +- `statefulsets` - Gets unused StatefulSets for the specified namespace or all namespaces. +- `role` - Gets unused Roles for the specified namespace or all namespaces. +- `hpa` - Gets unused HPAs for the specified namespace or all namespaces. +- `pvc` - Gets unused PVCs for the specified namespace or all namespaces. +- `ingress` - Gets unused Ingresses for the specified namespace or all namespaces. +- `pdb` - Gets unused PDBs for the specified namespace or all namespaces. ### Supported Flags ``` -e, --exclude-namespaces string Namespaces to be excluded, splited by comma. Example: --exclude-namespace ns1,ns2,ns3. If --include-namespace is set, --exclude-namespaces will be ignored. -h, --help help for kor --n, --include-namespaces string Namespaces to run on, splited by comma. Example: --include-namespace ns1,ns2,ns3. +-n, --include-namespaces string Namespaces to run on, split by comma. Example: --include-namespace ns1,ns2,ns3. -k, --kubeconfig string Path to kubeconfig file (optional) - --output string Output format (table or json) (default "table") + --output string Output format ("table" or "json") (default "table") ``` To use a specific subcommand, run `kor [subcommand] [flags]`. @@ -68,19 +68,19 @@ kor [subcommand] --help ## Supported resources and limitations -| Resource | What it looks for | Known False Positives ⚠️ | +| Resource | What it looks for | Known False Positives ⚠️ | |-----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------| -| Configmaps | Configmaps not used in the following places:
- Pods
- Containers
- Configmaps used through volumes
- Configmaps used through environment variables | Configmaps used by resources which don't explicitly state them in the config.
e.g Grafana dashboards loaded dynamically opa policies fluentd configs | -| Secrets | Secrets not used in the following places:
- Pods
- Containers
- Secrets used through volumes
- Secrets used through environment variables
- Secrets used by ingress TLS
-Secrets used by ServiceAccounts | Secrets used by resources which don't explicitly state them in the config | +| ConfigMaps | ConfigMaps not used in the following places:
- Pods
- Containers
- ConfigMaps used through Volumes
- ConfigMaps used through environment variables | ConfigMaps used by resources which don't explicitly state them in the config.
e.g Grafana dashboards loaded dynamically OPA policies fluentd configs | +| Secrets | Secrets not used in the following places:
- Pods
- Containers
- Secrets used through volumes
- Secrets used through environment variables
- Secrets used by Ingress TLS
- Secrets used by ServiceAccounts | Secrets used by resources which don't explicitly state them in the config | | Services | Services with no endpoints | | -| Deployments | Deployments with 0 Replicas | | -| ServiceAccounts | ServiceAccounts unused by pods
ServiceAccounts unused by roleBinding or clusterRoleBinding | | -| StatefulSets | Statefulsets with 0 Replicas | | +| Deployments | Deployments with no Replicas | | +| ServiceAccounts | ServiceAccounts unused by Pods
ServiceAccounts unused by roleBinding or clusterRoleBinding | | +| StatefulSets | Statefulsets with no Replicas | | | Roles | Roles not used in roleBinding | | -| Pvcs | Pvcs not used in pods | | -| Ingresses | Ingresses not pointing at any service. | | -| Hpas | Hpas not used in Deployments
Hpas not used in StatefulSets | | -| Pdbs | Pdbs not used in Deployments
Pdbs not used in StatefulSets | | +| PVCs | PVCs not used in Pods | | +| Ingresses | Ingresses not pointing at any Service | | +| Hpas | HPAs not used in Deployments
HPAs not used in StatefulSets | | +| Pdbs | PDBs not used in Deployments
PDBs not used in StatefulSets | | ## Ignore Resources @@ -94,8 +94,6 @@ import ( "github.com/yonahd/kor/pkg/kor" ) - - func main() { myNamespaces := kor.IncludeExcludeLists{ IncludeListStr: "my-namespace1, my-namespace2", @@ -122,5 +120,5 @@ Contributions are welcome! If you encounter any bugs or have suggestions for imp ## License -This project is open-source and available under the [MIT License](LICENSE). Feel free to use, modify, and distribute it as per the terms of the license. +This open-source project is available under the [MIT License](LICENSE). Feel free to use, modify, and distribute it as per the terms of the license.