{"id":15019947,"url":"https://github.com/darkowlzz/operator-toolkit","last_synced_at":"2025-10-24T20:32:05.867Z","repository":{"id":42470176,"uuid":"309750715","full_name":"darkowlzz/operator-toolkit","owner":"darkowlzz","description":"operator-toolkit provides framework and tools to help implement kubernetes operators.","archived":false,"fork":false,"pushed_at":"2022-04-04T12:11:30.000Z","size":665,"stargazers_count":6,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-31T04:24:41.377Z","etag":null,"topics":["controller-runtime","controllers","framework","golang","kubernetes","kubernetes-operators","operators","toolkit"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/darkowlzz.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}},"created_at":"2020-11-03T16:52:43.000Z","updated_at":"2022-10-23T14:19:55.000Z","dependencies_parsed_at":"2022-09-07T18:00:51.773Z","dependency_job_id":null,"html_url":"https://github.com/darkowlzz/operator-toolkit","commit_stats":null,"previous_names":["darkowlzz/composite-reconciler"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darkowlzz%2Foperator-toolkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darkowlzz%2Foperator-toolkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darkowlzz%2Foperator-toolkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darkowlzz%2Foperator-toolkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/darkowlzz","download_url":"https://codeload.github.com/darkowlzz/operator-toolkit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238035385,"owners_count":19405682,"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":["controller-runtime","controllers","framework","golang","kubernetes","kubernetes-operators","operators","toolkit"],"created_at":"2024-09-24T19:54:21.488Z","updated_at":"2025-10-24T20:32:00.806Z","avatar_url":"https://github.com/darkowlzz.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# operator-toolkit\n\n[![PkgGoDev](https://pkg.go.dev/badge/github.com/darkowlzz/operator-toolkit)](https://pkg.go.dev/github.com/darkowlzz/operator-toolkit)\n[![Go Report Card](https://goreportcard.com/badge/github.com/darkowlzz/operator-toolkit)](https://goreportcard.com/report/github.com/darkowlzz/operator-toolkit)\n[![Lint and test](https://github.com/darkowlzz/operator-toolkit/actions/workflows/test.yml/badge.svg)](https://github.com/darkowlzz/operator-toolkit/actions/workflows/test.yml)\n[![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n\noperator-toolkit provides framework and tools to help implement kubernetes\noperators.\n\n### Packages\n\n#### controller\n\n`controller` package provides tools to implement certain controller patterns.\n\n- `controller/composite` package contains interface and types to implement the\n    composite controller pattern.\n- `controller/sync` package contains interface and types to implement sync\n    controller pattern.\n- `controller/external-object-sync` package uses the sync pattern as the base\n    and adds a garbage collector for collecting the orphan objects in external\n    system.\n- `controller/metadata-sync` package uses the sync pattern as the base and adds\n    a resync to periodically sync object metadata between systems.\n- `controller/external` package provides tools for building external\n    controllers with the same core components that a k8s controller uses but\n    for an external system based on non-k8s event source.\n\n#### operator\n\n`operator` package provides tools to implement the core business logic of an\noperator that interacts with the world. An `Operand` is a unit of work. An\n`Operator` can have one or more `Operand`s. The relationship between the\n`Operand`s is modelled using a Directed Asyclic Graph (DAG). The `Operator` can\nbe configured to define how the `Operand`s are executed.\n\n#### declarative\n\n`declarative` package provides tools to create and transform the kubernetes\nmanifests in a declarative way. It uses kustomize tools to read, organize and\ntransform the manifests with the desired configuration. This helps avoid\nwriting Go structs for all the kubernetes objects and write generic reusable\ntransforms.\n\n#### rbac\n\n`rbac/client` package provides a controller-runtime generic client\nimplementation capable of recording the actions performed using the client on\nthe objects and generate RBAC permissions as Role and ClusterRole.\n\n#### telemetry\n\n`telemetry/export` package provides opentelemetry exporters that can be used to\nenable telemetry in an operator.\n\n#### webhook\n\n- `webhook/cert` package provides a local certificate manager that can provision\n    self signed certificate for webhook server, backed by k8s secret for\n    persistence, and refresh certificate when they expire automatically.\n\n- `webhook/admission` package provides a consistent way of building admission\n    controllers for k8s native and custom resources with function chaining\n    support.\n\nThe above packages can be used together or independently of each other.\n`example/` contains an example of using all the packages together in a\nkubebuilder based operator.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarkowlzz%2Foperator-toolkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdarkowlzz%2Foperator-toolkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarkowlzz%2Foperator-toolkit/lists"}