{"id":19205724,"url":"https://github.com/fairwindsops/klustered","last_synced_at":"2025-05-12T17:16:24.438Z","repository":{"id":96499569,"uuid":"392429853","full_name":"FairwindsOps/klustered","owner":"FairwindsOps","description":null,"archived":false,"fork":false,"pushed_at":"2021-08-04T18:26:29.000Z","size":104,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-05-12T17:15:49.051Z","etag":null,"topics":["klustered","kubernetes"],"latest_commit_sha":null,"homepage":"https://fairwinds.com","language":"Go","has_issues":false,"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/FairwindsOps.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"zenodo":null}},"created_at":"2021-08-03T19:19:06.000Z","updated_at":"2022-09-15T18:44:56.000Z","dependencies_parsed_at":"2023-04-12T10:45:58.316Z","dependency_job_id":null,"html_url":"https://github.com/FairwindsOps/klustered","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FairwindsOps%2Fklustered","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FairwindsOps%2Fklustered/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FairwindsOps%2Fklustered/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FairwindsOps%2Fklustered/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FairwindsOps","download_url":"https://codeload.github.com/FairwindsOps/klustered/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253785013,"owners_count":21963903,"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":["klustered","kubernetes"],"created_at":"2024-11-09T13:13:45.113Z","updated_at":"2025-05-12T17:16:24.433Z","avatar_url":"https://github.com/FairwindsOps.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Klustered\n\nThis go application was designed to prevent the other team in a Klustered challenge from being able to update a deployment from a v1 to a v2 image. There are several approaches it takes to doing this.\n\n## Usage\n\n### Deployment\n\nJust run `klustered deploy` and the pod will be created along with a service account and clusterrolebinding for that service account.\n\n## Breaks\n\n### MutatingAdmissionWebhook\n\nThe application registers a mutating admission webhook that modifies any pod with the klustered v2 image back to the klustered v1 image.\n\n### ValidatingAdmissionWebhook\n\nThe application registers a validating admission webhook that reject any create or update of a deployment using the v2 image\n\n### Self-Healing\n\nIf either of the hooks, or the service are deleted, there is a background loop that will re-create those resources.\n\nAdditionally, if the pod receives a shutdown signal (INT, KILL, etc.), it will create a new copy of itself.\n\n### Hiding in the open\n\nAll of the resources created are named to look innocent. Things like `default`, `api-server`, `cilium-XXXXX`, etc.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffairwindsops%2Fklustered","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffairwindsops%2Fklustered","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffairwindsops%2Fklustered/lists"}