The Kubernetes controller-runtime Project is a set of go libraries for building Controllers. It is leveraged by Kubebuilder and Operator SDK. Both are a great place to start for new projects. See Kubebuilder's Quick Start to see how it can be used.
Documentation:
- Package overview
- Basic controller using builder
- Creating a manager
- Creating a controller
- Examples
- Designs
The full documentation can be found at VERSIONING.md, but TL;DR:
Users:
- We follow Semantic Versioning (semver)
- Use releases with your dependency management to ensure that you get compatible code
- The main branch contains all the latest code, some of which may break compatibility (so "normal"
go get
is not recommended)
Contributors:
- All code PR must be labeled with 🐛 (patch fixes), ✨ (backwards-compatible features), or
⚠️ (breaking changes) - Breaking changes will find their way into the next major release, other changes will go into an semi-immediate patch or minor release
- For a quick PR template suggesting the right information, use one of these PR templates:
Every minor version of controller-runtime has been tested with a specific minor version of client-go. A controller-runtime minor version may be compatible with other client-go minor versions, but this is by chance and neither supported nor tested. In general, we create one minor version of controller-runtime for each minor version of client-go and other k8s.io/* dependencies.
The minimum Go version of controller-runtime is the highest minimum Go version of our Go dependencies. Usually, this will be identical to the minimum Go version of the corresponding k8s.io/* dependencies.
Compatible k8s.io/*, client-go and minimum Go versions can be looked up in our go.mod file.
k8s.io/*, client-go | minimum Go version | |
---|---|---|
CR v0.20 | v0.32 | 1.23 |
CR v0.19 | v0.31 | 1.22 |
CR v0.18 | v0.30 | 1.22 |
CR v0.17 | v0.29 | 1.21 |
CR v0.16 | v0.28 | 1.20 |
CR v0.15 | v0.27 | 1.20 |
See FAQ.md
Learn how to engage with the Kubernetes community on the community page.
controller-runtime is a subproject of the kubebuilder project in sig apimachinery.
You can reach the maintainers of this project at:
- Slack channel: #controller-runtime
- Google Group: kubebuilder@googlegroups.com
Contributions are greatly appreciated. The maintainers actively manage the issues list, and try to highlight issues suitable for newcomers. The project follows the typical GitHub pull request model. See CONTRIBUTING.md for more details. Before starting any work, please either comment on an existing issue, or file a new one.
Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.