Kubebuilder - SDK for building Kubernetes APIs using CRDs
Clone or download
Latest commit 99c17c9 Nov 19, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
build cleanup kubebulder-gen Oct 12, 2018
cmd Merge pull request #469 from imjoey/improve_cmd_desc Nov 14, 2018
docs Merge pull request #478 from hidekazuna/fix_book_example Nov 19, 2018
pkg/scaffold Merge pull request #463 from interma/logging Nov 16, 2018
scripts change import path to use vanity URL sigs.k8s.io Oct 10, 2018
test Merge pull request #463 from interma/logging Nov 16, 2018
vendor drop scaffold pkg from vendor Oct 11, 2018
.gitignore not check in arch and os specific node_modules Sep 7, 2018
.travis.yml cleanup kubebulder-gen Oct 12, 2018
BUILD.bazel change import path to use vanity URL sigs.k8s.io Oct 10, 2018
CONTRIBUTING.md Update contributing guide Sep 14, 2018
Gopkg.lock drop scaffold pkg from vendor Oct 11, 2018
Gopkg.toml add required pkgs for dep and update vendor Oct 11, 2018
LICENSE Fork [apiserver-builder](https://github.com/kubernetes-incubator/apis… Mar 15, 2018
OWNERS Update kubebuilder OWNERS Jun 7, 2018
OWNERS_ALIASES change github handle Jun 21, 2018
README.md change import path to use vanity URL sigs.k8s.io Oct 10, 2018
RELEASE.md Update RELEASE.md to point to HEAD binaries Mar 16, 2018
SECURITY_CONTACTS Add SECURITY_CONTACTS file May 31, 2018
WORKSPACE Fork [apiserver-builder](https://github.com/kubernetes-incubator/apis… Mar 15, 2018
code-of-conduct.md Fork [apiserver-builder](https://github.com/kubernetes-incubator/apis… Mar 15, 2018
common.sh add test for webhook scaffolding Oct 19, 2018
generated_golden.sh cleanup kubebulder-gen Oct 12, 2018
test.sh add test for webhook scaffolding Oct 19, 2018

README.md

Build Status Go Report Card

Kubebuilder

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.

Installalation

It is strongly recommended that you use a released version. Release binaries are available on the releases page. Follow the instructions to install Kubebuilder.

Getting Started

See the Getting Started documentation.

Quick Start

Documentation

Check out the Kubebuilder book.

Resources

Motivation

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

  1. Create a new project directory
  2. Create one or more resource APIs as CRDs and then add fields to the resources
  3. Implement reconcile loops in controllers and watch additional resources
  4. Test by running against a cluster (self-installs CRDs and starts controllers automatically)
  5. Update bootstrapped integration tests to test new fields and business logic
  6. Build and publish a container from the provided Dockerfile

Scope

Building APIs using CRDs, Controllers and Admission Webhooks.

Philosophy

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

Techniques

  • 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
  • Provide bootstrapping commands to initialize new packages

Troubleshooting

  • Bugs and Feature Requests:

    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.

  • Slack

    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.

Contributing

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.