Skip to content

metacontroller/metacontroller

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,160 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub release (latest SemVer) GitHub Release Date GitHub Docker Image Size (latest semver) Docker Pulls GitHub contributors Go Report Card codecov

Metacontroller

Metacontroller is an add-on for Kubernetes that makes it easy to write and deploy custom controllers in the form of simple scripts.

Instead of writing and maintaining a full Go controller with client libraries, informers, and boilerplate, you describe what resources to watch declaratively and provide a webhook (in any language) that receives the current state as JSON and returns the desired state as JSON. Metacontroller takes care of the rest: watches, caching, work queues, retries, and level-triggered reconciliation.

This is a continuation of great work started by GKE here. We are excited to move forward with Metacontroller as a community maintained project. A big thank you to all of the wonderful Metacontroller community members that made this happen!

Why Metacontroller?

  • Write controllers in any language - all you need is a webhook that speaks JSON, so Python, JavaScript, Jsonnet, Go, or anything else works.
  • No boilerplate - no schema/IDL, no generated code, no client library dependencies.
  • Production-ready behavior for free - label selectors, adopt/orphan semantics, garbage collection, watches, caching, work queues, optimistic concurrency, and retries with backoff all come built in.
  • Build reusable abstractions - compose existing Kubernetes APIs into higher-level operators, or reimplement APIs like StatefulSet as Metacontroller hooks.

See the Features page for the full picture.

Getting Started

Quick install

kubectl apply -k https://github.com/metacontroller/metacontroller/manifests/production

See the install guide for prerequisites, the Helm alternative, and notes on migrating from the original GKE project.

Please follow this guide.

Community & Contact

Contributing

Contributions are very welcome! See CONTRIBUTING.md and the contributor guide for how to build the project, run tests, and submit changes.

Licensing

This project is licensed under the Apache License 2.0.

About

Writing kubernetes controllers can be simple

Topics

Resources

License

Code of conduct

Contributing

Stars

994 stars

Watchers

10 watching

Forks

Packages

 
 
 

Contributors

Languages