Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

What is the difference between kubebuilder and operator-sdk #1758

gyliu513 opened this issue Jul 31, 2019 · 2 comments

What is the difference between kubebuilder and operator-sdk #1758

gyliu513 opened this issue Jul 31, 2019 · 2 comments


Copy link

@gyliu513 gyliu513 commented Jul 31, 2019

I can use the to create an operator as well for both APIs and Controllers, so what is the major difference between those two projects?


This comment has been minimized.

Copy link

@joelanford joelanford commented Aug 1, 2019

@gyliu513 There's not a huge difference between the Go projects that kubebuilder and operator-sdk scaffold. Both use controller-tools and controller-runtime and both scaffold substantially similar go package structures.

Where they differ is:

  • Operator SDK also has support for Ansible and Helm operators, which make it easy to write operators without having to learn Go and if you already have experience with Ansible or Helm
  • Operator SDK includes integrations with the Operator Lifecycle Manager (OLM), which is a key component of the Operator Framework that is important to Day 2 cluster operations, like managing a live upgrade of your operator.
  • Operator SDK includes a scorecard subcommand that helps you understand if your operator follows best practices.
  • Operator SDK includes an e2e testing framework that simplifies testing your operator against an actual cluster.
  • Kubebuilder includes an envtest package that allows operator developers to run simple tests with a standalone etcd and apiserver.
  • Kubebuilder scaffolds a Makefile to assist users in operator tasks (build, test, run, code generation, etc.); Operator SDK is currently using built-in subcommands. Each has pros and cons. The SDK team will likely be migrating to a Makefile-based approach in the future.
  • Kubebuilder uses Kustomize to build deployment manifests; Operator SDK uses static files with placeholders.
  • Kubebuilder has recently improved its support for admission and CRD conversion webhooks, which has not yet made it into SDK.

The SDK and Kubebuilder teams work closely together, and we're planning to increase our efforts to help the kubebuilder team maintain controller-tools and controller-runtime so that the entire community has access to the latest features and bug fixes.

I'm closing this issue since that covers all the major things I can think of. We'll keep answering questions if you have follow-ups though! 🙂

@joelanford joelanford closed this Aug 1, 2019
@joelanford joelanford self-assigned this Aug 1, 2019

This comment has been minimized.

Copy link
Contributor Author

@gyliu513 gyliu513 commented Aug 2, 2019

Awesome, thanks @joelanford for the detailed explanation!

One more question: Does the SDK and Kubebuilder team had some discussion to merge those two projects to one project for easy maintain?

@nrvnrvn nrvnrvn mentioned this issue Oct 14, 2019
0 of 4 tasks complete
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
2 participants
You can’t perform that action at this time.