{"id":30846239,"url":"https://github.com/kusionstack/resourceconsist","last_synced_at":"2025-09-07T00:06:07.404Z","repository":{"id":205288467,"uuid":"709117994","full_name":"KusionStack/resourceconsist","owner":"KusionStack","description":"Frame for controllers managing resource in/beyond Cluster, and offering the ability of following PodOpsLifecycle.","archived":false,"fork":false,"pushed_at":"2025-08-25T13:18:32.000Z","size":19972,"stargazers_count":11,"open_issues_count":6,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-25T14:38:05.771Z","etag":null,"topics":["cloud-native","kubernetes","kubernetes-operator"],"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/KusionStack.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":"2023-10-24T03:40:05.000Z","updated_at":"2025-08-25T12:31:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"a76679a1-dd95-4f68-9d12-b1b9dfeb4afc","html_url":"https://github.com/KusionStack/resourceconsist","commit_stats":{"total_commits":22,"total_committers":2,"mean_commits":11.0,"dds":"0.13636363636363635","last_synced_commit":"816945219453e895b82c8492d2d509642a1b4cc9"},"previous_names":["kusionstack/resourceconsist"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/KusionStack/resourceconsist","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KusionStack%2Fresourceconsist","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KusionStack%2Fresourceconsist/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KusionStack%2Fresourceconsist/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KusionStack%2Fresourceconsist/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KusionStack","download_url":"https://codeload.github.com/KusionStack/resourceconsist/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KusionStack%2Fresourceconsist/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273978867,"owners_count":25201413,"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","status":"online","status_checked_at":"2025-09-06T02:00:13.247Z","response_time":2576,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cloud-native","kubernetes","kubernetes-operator"],"created_at":"2025-09-07T00:06:04.586Z","updated_at":"2025-09-07T00:06:07.376Z","avatar_url":"https://github.com/KusionStack.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ResourceConsist\n[**ResourceConsist**](https://kusionstack.io/docs/operating/manuals/resourceconsist) aims to make a \ncustomized controller can be realized easily, and offering the ability of following \n[**PodOpsLifecycle**](https://kusionstack.io/docs/operating/concepts/podopslifecycle) for controllers.\n\nThe only thing users need to do to realize a customized controller is writing an adapter implementing \n[ReconcileAdapter](https://github.com/KusionStack/resourceconsist/blob/main/pkg/frame/controller/types.go#L93). \nFor controllers following **PodOpsLifecycle**, \n[WebhookAdapter](https://github.com/KusionStack/resourceconsist/blob/main/pkg/frame/webhook/types.go#L26) is \nalso necessary to be implemented.\n\n\u003cimg src=\"docs/resourceconsist.png\" width=\"500\" height=\"400\"/\u003e\n\n🤠**Employer** is the entity responsible for managing and coordinating the utilization of another resource, \nsimilar to how a service selects and controls pods.\n\n👩‍💻**Employee** is the resource managed by another resource, like pods selected by service.\n\n👉 Please refer to [key concepts](https://github.com/KusionStack/resourceconsist/tree/main/docs/keyconcepts.md) \nto find out what 🤠**Employer**/👩‍💻**Employee**/... are.\n\n## 💻 Get Started\n### 🔧 Tutorial\n**ResourceConsist** offers the frame for starting controller. \nControllers started by adapters and resource consist frame can handle resources beyond or in cluster by themselves \nor cooperate with other controllers.\n\n[DemoControllerAdapter](https://github.com/KusionStack/resourceconsist/tree/main/pkg/frame/controller/resourceconsist_controller_suite_test.go#L31)\nis an adapter handles resources by itself, while [SlbControllerAdapter](https://github.com/KusionStack/resourceconsist/tree/main/pkg/adapters/alibabacloudslb/alibabacloudslb_controller.go#L35)\nis an adapter handles resources cooperate with CCM controller.\n\nWith **ResourceConsist**, you can build a bridge between existing controllers and PodOpsLifecycle, just like what\nSlbControllerAdapter](https://github.com/KusionStack/resourceconsist/tree/main/pkg/adapters/alibabacloudslb/alibabacloudslb_controller.go#L35) did.\n\nPlease visit [tutorial](https://github.com/KusionStack/resourceconsist/tree/main/docs/tutorial.md) to start a controller.\n## ☎️ Contact us\n- Twitter: [KusionStack](https://twitter.com/KusionStack)\n- Slack: [Kusionstack](https://join.slack.com/t/kusionstack/shared_invite/zt-19lqcc3a9-_kTNwagaT5qwBE~my5Lnxg)\n- DingTalk (Chinese): 42753001\n- Wechat Group (Chinese)\n\n  \u003cimg src=\"docs/wx_spark.jpg\" width=\"200\" height=\"200\"/\u003e\n## 🎖︎ Contribution guide\n**ResourceConsist** is currently in its early stages. Our goal is to make a customized controller can be realized \neasily, especially for controllers following PodOpsLifecycle. \n\nWe will continue implementing more common used traffic controller into \n[adapters](https://github.com/KusionStack/resourceconsist/tree/main/pkg/adapters)\n\n🚀 If you want to contribute to built-in adapters, you can start from contribute them into \n[experimental/adapters](https://github.com/KusionStack/resourceconsist/tree/main/pkg/experimental/adapters). \nWe will move it into [adapters](https://github.com/KusionStack/resourceconsist/tree/main/pkg/adapters) when the \nexperimental adapters are ready to release.\n\nWe welcome everyone to participate in construction with us. Visit the [contribution guide](docs/contribution.md)\nto understand how to participate in the contribution KusionStack project.\nIf you have any questions, please [submit the issue](https://github.com/KusionStack/resourceconsist/issues).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkusionstack%2Fresourceconsist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkusionstack%2Fresourceconsist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkusionstack%2Fresourceconsist/lists"}