Kustomize v2
(默认脚手架)
Kustomize 插件用于与语言基础插件 base.go.kubebuilder.io/v4 搭配,脚手架生成全部 Kustomize 清单。
对于通过 go/v4(默认脚手架)创建的项目,它会在 config/ 目录下生成配置清单。
诸如 Operator-sdk 这类项目会把 Kubebuilder 当作库使用,并提供 Ansible、Helm 等其它语言的选项。 Kustomize 插件帮助它们在不同语言间保持一致的配置;同时也便于编写在默认脚手架之上做改动的插件, 避免在多种语言插件中手工同步更新。同样的思路还能让你创建可复用到不同项目与语言的“辅助”插件。
如何使用
如果希望你的语言插件使用 kustomize,可使用 Bundle Plugin 指定:由“你的语言插件 + kustomize 配置插件”组合而成,例如:
import (
...
kustomizecommonv2 "sigs.k8s.io/kubebuilder/v4/pkg/plugins/common/kustomize/v2"
golangv4 "sigs.k8s.io/kubebuilder/v4/pkg/plugins/golang/v4"
...
)
// 为 Kubebuilder go/v4 脚手架的 Golang 项目创建组合插件
gov4Bundle, _ := plugin.NewBundle(plugin.WithName(golang.DefaultNameQualifier),
plugin.WithVersion(plugin.Version{Number: 4}),
plugin.WithPlugins(kustomizecommonv2.Plugin{}, golangv4.Plugin{}), // 脚手架生成 config/ 与全部 kustomize 文件
)
也可以单独使用 kustomize/v2:
kubebuilder init --plugins=kustomize/v2
$ ls -la
total 24
drwxr-xr-x 6 camilamacedo86 staff 192 31 Mar 09:56 .
drwxr-xr-x 11 camilamacedo86 staff 352 29 Mar 21:23 ..
-rw------- 1 camilamacedo86 staff 129 26 Mar 12:01 .dockerignore
-rw------- 1 camilamacedo86 staff 367 26 Mar 12:01 .gitignore
-rw------- 1 camilamacedo86 staff 94 31 Mar 09:56 PROJECT
drwx------ 6 camilamacedo86 staff 192 31 Mar 09:56 config
或者与基础语言插件组合使用:
# 提供与 go/v4 相同的组合脚手架,但显式声明使用 kustomize/v2
kubebuilder init --plugins=kustomize/v2,base.go.kubebuilder.io/v4 --domain example.org --repo example.org/guestbook-operator
子命令
Kustomize 插件实现了以下子命令:
- init(
$ kubebuilder init [OPTIONS]) - create api(
$ kubebuilder create api [OPTIONS]) - create webhook(
$ kubebuilder create api [OPTIONS])
影响的文件
本插件会创建或更新以下脚手架:
config/*
延伸阅读
- kustomize 插件实现代码
- kustomize 文档
- kustomize 仓库
