{"id":13839376,"url":"https://github.com/stakater/Jamadar","last_synced_at":"2025-07-11T03:32:21.834Z","repository":{"id":57499449,"uuid":"131907082","full_name":"stakater/Jamadar","owner":"stakater","description":"A kubernetes controller which cleans up cluster left-overs – [✩Star] if you're using it!","archived":false,"fork":false,"pushed_at":"2023-12-15T17:43:01.000Z","size":18630,"stargazers_count":46,"open_issues_count":2,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-10T14:01:41.364Z","etag":null,"topics":["k8s","kubecleaner","kubernetes","openshift"],"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/stakater.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-05-02T21:20:06.000Z","updated_at":"2025-04-09T11:02:22.000Z","dependencies_parsed_at":"2022-08-27T22:40:57.918Z","dependency_job_id":"9e4b810c-c5c9-4d22-9d76-8ef6a4f3c977","html_url":"https://github.com/stakater/Jamadar","commit_stats":null,"previous_names":["stakater/jamadaar"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/stakater/Jamadar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stakater%2FJamadar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stakater%2FJamadar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stakater%2FJamadar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stakater%2FJamadar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stakater","download_url":"https://codeload.github.com/stakater/Jamadar/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stakater%2FJamadar/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264721359,"owners_count":23653925,"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":["k8s","kubecleaner","kubernetes","openshift"],"created_at":"2024-08-04T17:00:20.954Z","updated_at":"2025-07-11T03:32:16.825Z","avatar_url":"https://github.com/stakater.png","language":"Go","funding_links":[],"categories":["Operators vs Controllers","OPS"],"sub_categories":["Cleanup"],"readme":"# ![](assets/web/jamadar-round-100px.png) Jamadar\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/stakater/jamadar?style=flat-square)](https://goreportcard.com/report/github.com/stakater/jamadar)\n[![Go Doc](https://img.shields.io/badge/godoc-reference-blue.svg?style=flat-square)](http://godoc.org/github.com/stakater/jamadar)\n[![Release](https://img.shields.io/github/release/stakater/jamadar.svg?style=flat-square)](https://github.com/stakater/jamadar/releases/latest)\n[![GitHub tag](https://img.shields.io/github/tag/stakater/jamadar.svg?style=flat-square)](https://github.com/stakater/jamadar/releases/latest)\n[![Docker Pulls](https://img.shields.io/docker/pulls/stakater/jamadar.svg?style=flat-square)](https://hub.docker.com/r/stakater/jamadar/)\n[![Docker Stars](https://img.shields.io/docker/stars/stakater/jamadar.svg?style=flat-square)](https://hub.docker.com/r/stakater/jamadar/)\n[![MicroBadger Size](https://img.shields.io/microbadger/image-size/stakater/jamadar.svg?style=flat-square)](https://microbadger.com/images/stakater/jamadar)\n[![MicroBadger Layers](https://img.shields.io/microbadger/layers/stakater/jamadar.svg?style=flat-square)](https://microbadger.com/images/stakater/jamadar)\n[![license](https://img.shields.io/github/license/stakater/jamadar.svg?style=flat-square)](LICENSE)\n\n[![Get started with Stakater](https://stakater.github.io/README/stakater-github-banner.png)](http://stakater.com/?utm_source=Jamadar\u0026utm_medium=github)\n\n\n## WHY NAME JAMADAR?\nJamadar, an Urdu word, is used for Sweepers/Cleaners in Pakistan. This Jamadar will keep your cluster clean and sweep away the left overs of your cluster and will act as you want it to.\n\n## Problem\nDangling/Redundant resources take a lot of space and memory in a cluster. So we want to delete these unneeded resources depending upon the age and pre-defined  annotations. e.g. I would like to delete namespaces that were without a specific annotation and are almost a month old and would like to take action whenever that happens.\n\n## Solution\n\nJamadar is a Kubernetes controller that can poll at configured time intervals and watch for dangling resources that are an 'X' time period old and don't have a specific annotation, and will delete them and take corresponding actions.\n\n## Configuring\n\nFirst of all you need to modify `configs/config.yaml` file. Following are the available options that you can use to customize Jamadar:\n\n| Key                   |Description                                                                    |\n|-----------------------|-------------------------------------------------------------------------------|\n| pollTimeInterval      | The time interval after which the controller will poll and look for dangling resources, The value can be in \"ms\", \"s\", \"m\", \"h\" or even combined like 2h45m       |\n| age        | The time period that a dangling resource  has been created e.g. delete only resources that are 7 days old, The value can be in \"d\", \"w\", \"m\", \"y\", Combined format is not supported     |\n| resources               | The resources that you want to be taken care of by Jamadar, e.g. namespaces, pods, etc   |\n| actions               | The Array of actions that you want to take, e.g. send message to Slack, etc   |\n| restrictedNamespaces               | The Array of string which contains the namespaces names to ignore   |\n\n### Supported Resources\nCurrently we are supporting the following dangling resources,\n- namespaces\n\n\nWe will be adding support for other Resources as well in the future\n\n### Supported Actions\nCurrently we are supporting following Actions with their Parameters,\n- Default: No parameters needed, it will just log to console the details.\n- Slack: you need to provide `token` and `Channel Name` as Parameters in the yaml file\n\nWe will be adding support for other Actions as well in the future\n\n## Deploying to Kubernetes\n\nYou have to first clone or download the repository contents. The kubernetes deployment and files are provided inside `deployments/kubernetes/manifests` folder.\n\n### Deploying through kubectl\n\nYou can deploy Jamadar by running the following kubectl commands:\n\n```bash\nkubectl apply -f configmap.yaml -n \u003cnamespace\u003e\nkubectl apply -f rbac.yaml -n \u003cnamespace\u003e\nkubectl apply -f deployment.yaml -n \u003cnamespace\u003e\n```\n\n### Helm Charts\n\nOr alternatively if you configured `helm` on your cluster, you can deploy Jamadar via helm chart located under `deployments/kubernetes/chart/Jamadar` folder.\n\n## Help\n\n**Got a question?**\nFile a GitHub [issue](https://github.com/stakater/Jamadar/issues), or send us an [email](mailto:stakater@gmail.com).\n\n### Talk to us on Slack\nJoin and talk to us on the #tools-imc channel for discussing Jamadar\n\n[![Join Slack](https://stakater.github.io/README/stakater-join-slack-btn.png)](https://slack.stakater.com/)\n[![Chat](https://stakater.github.io/README/stakater-chat-btn.png)](https://stakater-community.slack.com/messages/CAPTSU1EX)\n\n## Contributing\n\n### Bug Reports \u0026 Feature Requests\n\nPlease use the [issue tracker](https://github.com/stakater/Jamadar/issues) to report any bugs or file feature requests.\n\n### Developing\n\nPRs are welcome. In general, we follow the \"fork-and-pull\" Git workflow.\n\n 1. **Fork** the repo on GitHub\n 2. **Clone** the project to your own machine\n 3. **Commit** changes to your own branch\n 4. **Push** your work back up to your fork\n 5. Submit a **Pull request** so that we can review your changes\n\nNOTE: Be sure to merge the latest from \"upstream\" before making a pull request!\n\n## Changelog\n\nView our closed [Pull Requests](https://github.com/stakater/Jamadar/pulls?q=is%3Apr+is%3Aclosed).\n\n## License\n\nApache2 © [Stakater](http://stakater.com)\n\n## About\n\n`Jamadar` is maintained by [Stakater][website]. Like it? Please let us know at \u003chello@stakater.com\u003e\n\nSee [our other projects][community]\nor contact us in case of professional services and queries on \u003chello@stakater.com\u003e\n\n  [website]: http://stakater.com/\n  [community]: https://github.com/stakater/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstakater%2FJamadar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstakater%2FJamadar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstakater%2FJamadar/lists"}