简介
从0到1,手把手教会如何使用kubebuilder创建crd, 并且定制自己的控制器。
代码:https://github.com/zoux86/operator-example
0. 下载kubebuilder
# download kubebuilder and install locally. curl -L -o kubebuilder https://go.kubebuilder.io/dl/latest/$(go env GOOS)/$(go env GOARCH) chmod +x kubebuilder && mv kubebuilder /usr/local/bin/
1. 创建目录
~/go/src 是我的go src目录
github.com/zoux86/operator-example是想自定义的crd项目
// 可以看出来go mod init 指定的字符串就是mod文件里面的module目录 ~/go/src/github.com/zoux86/operator-example# go mod init github.com/zoux86/operator-example go: creating new go.mod: module github.com/zoux86/operator-example ~/go/src/github.com/zoux86/operator-example # ls go.mod ~/go/src/github.com/zoux86/operator-example # cat go.mod module github.com/zoux86/operator-example go 1.18
2. 初始化项目
执行kubebuilder init这一条命令就行了
~/go/src/github.com/zoux86/operator-example # ~/kubebuilder init --domain github.com --license apache2 --owner "zoux86" Writing kustomize manifests for you to edit... Writing scaffold for you to edit... Get controller runtime: $ go get sigs.k8s.io/controller-runtime@v0.11.2 go: downloading sigs.k8s.io/controller-runtime v0.11.2 go: downloading k8s.io/apimachinery v0.23.5 go: downloading k8s.io/client-go v0.23.5 go: downloading k8s.io/utils v0.0.0-20211116205334-6203023598ed go: downloading k8s.io/component-base v0.23.5 go: downloading k8s.io/api v0.23.5 go: downloading k8s.io/apiextensions-apiserver v0.23.5 go: downloading sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 go: downloading golang.org/x/net v0.0.0-20211209124913-491a49abca63 go: downloading golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f Update dependencies: $ go mod tidy go: downloading github.com/Azure/go-autorest/autorest v0.11.18 go: downloading github.com/Azure/go-autorest/autorest/adal v0.9.13 go: downloading github.com/Azure/go-autorest/tracing v0.6.0 go: downloading github.com/Azure/go-autorest/autorest/mocks v0.4.1 go: downloading github.com/Azure/go-autorest/autorest/date v0.3.0 go: downloading github.com/Azure/go-autorest/logger v0.2.1 go: downloading golang.org/x/crypto v0.0.0