Don't use go get
/ go install
, instead you MUST download a tar binary release or create your own release using
the release program. To build your own release see CONTRIBUTING.md
Kubebuilder is a framework for building Kubernetes APIs using custom resource definitions (CRDs).
Note: kubebuilder does not exist as an example to copy-paste, but instead provides powerful libraries and tools to simplify building and publishing Kubernetes APIs from scratch.
See the Getting Started documentation.
Building Kubernetes tools and APIs involves making a lot of decisions and writing a lot of boilerplate.
In order to facilitate easily building Kubernetes APIs and tools using the canonical approach, this framework provides a collection of Kubernetes development tools to minimize toil.
Kubebuilder attempts to facilitate the following developer workflow for building APIs
- Create a new project directory
- Create one or more resource APIs as CRDs and then add fields to the resources
- Implement reconcile loops in controllers and watch additional resources
- Test by running against a cluster (self-installs CRDs and starts controllers automatically)
- Update bootstrapped integration tests to test new fields and business logic
- Build and publish a container from the provided Dockerfile
Building APIs using CRDs, Controllers and Admission Webhooks.
Provide clean library abstractions with clear and well exampled godocs.
- Prefer using go interfaces and libraries over relying on code generation
- Prefer using code generation over 1 time init of stubs
- Prefer 1 time init of stubs over forked and modified boilerplate
- Never fork and modify boilerplate
- Provide higher level libraries on top of low level client libraries
- Protect developers from breaking changes in low level libraries
- Start minimal and provide progressive discovery of functionality
- Provide sane defaults and allow users to override when they exist
- Provide code generators to maintain common boilerplate that can't be addressed by interfaces
- Driven off of
//+
comments
- Driven off of
- Provide bootstrapping commands to initialize new packages
-
If you have what looks like a bug, or you would like to make a feature request, please use the Github issue tracking system. Before you file an issue, please search existing issues to see if your issue is already covered.
-
For realtime discussion, you can join the #kubebuilder slack channel. Slack requires registration, but the Kubernetes team is open invitation to anyone to register here. Feel free to come and ask any questions.