https://github.com/dixudx/yacht
Most Light-weighted Kubernetes controller-runtime Framework
https://github.com/dixudx/yacht
controller-runtime framework golang kubernetes operator
Last synced: 10 months ago
JSON representation
Most Light-weighted Kubernetes controller-runtime Framework
- Host: GitHub
- URL: https://github.com/dixudx/yacht
- Owner: dixudx
- License: apache-2.0
- Created: 2022-06-10T10:11:58.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-03-24T06:26:25.000Z (10 months ago)
- Last Synced: 2025-03-24T07:32:32.719Z (10 months ago)
- Topics: controller-runtime, framework, golang, kubernetes, operator
- Language: Go
- Homepage:
- Size: 141 KB
- Stars: 12
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Yacht
[](https://pkg.go.dev/github.com/dixudx/yacht)
[](https://www.apache.org/licenses/LICENSE-2.0.html)

[](https://goreportcard.com/report/github.com/dixudx/yacht)

[](https://github.com/dixudx/yacht/tags)
[](https://codecov.io/gh/dixudx/yacht)
---
Light-weighted Kubernetes controller-runtime Framework with Minimal Dependencies
---
## Why Building Yacht
Well, there are quite a few controller/operator frameworks out there, such
as [kubebuilder](https://github.com/kubernetes-sigs/kubebuilder),
[operator-sdk](https://github.com/operator-framework/operator-sdk),
[controller-runtime](https://github.com/kubernetes-sigs/controller-runtime). But they are not quite handy.
First of all, building a scaffold project may not be what we really need. Most of the time, we are not trying to build a
project from scratch, but rather adding new controllers on an existing project. Moreover, the structure of the scaffold
project does not suit all. It is not easy to customize the scaffolds according to our own preferences.
Secondly, **backwards compatibility**. Most frameworks **DO NOT** guarantee any particular compatibility matrix between
kubernetes library dependencies ([client-go](https://github.com/kubernetes/client-go),
[apimachinery](https://github.com/kubernetes/apimachinery), etc). This is painful when we want to pin Kubernetes library
dependencies to any specific lower versions. It has always been a headache to upgrade/downgrade the versions of
frameworks and Kubernetes library dependencies.
Last but not least, we **DO** want a light-weighted framework with minimal dependencies.
That's why I build [yacht](https://github.com/dixudx/yacht), which brings pleasure user experiences on writing
Kubernetes controllers. It is built with minimal dependencies, which makes it easier to downgrade/upgrade module
versions.
## To Start Using Yacht
1. Add `github.com/dixudx/yacht` to your `go.mod` file.
2. Follow [yacht examples](./examples) and learn how to use.