CronJob controller
会控制 kubernetes 集群上的 job 每隔一段时间运行一次,它是基于 Job controller
实现的,Job controller
的 job 只会执行任务一次。
mkdir project
cd project
kubebuilder init --domain tutorial.kubebuilder.io --repo tutorial.kubebuilder.io/project
-domain tutorial.kubebuilder.io
:指定 创建的 API 的组名后缀。-repo tutorial.kubebuilder.io/project
:指定 Go module 的路径,用于设置 go.mod
中的模块名。apiVersion 决定了该资源属于哪个 API 组、使用哪个版本的 schema 来解析。完整的apiVersion:
apiVersion: <group>.<domain>/<version>
go.mod
: 包含最基本依赖关系的 go module 文件。
Makefile
: 用于构建和部署 controller。
PROJECT
: 用于创建新组件的 Kubebuilder 元数据。
config/
目录:运行 operator 所需的所有配置文件。现在它只包含运行 controller 所需要的 Kustomize YAML
配置文件,后续编写 operator 时,这个目录还会包含 CustomResourceDefinitions(CRD)、RBAC 和 Webhook 等相关的配置文件。
config/default
包含Kustomize base文件,用于以标准配置启动 controller。config/manager
: 包含在 k8s 集群中以 pod 形式运行 controller 的 YAML 配置文件config/rbac
: 包含运行 controller 所需最小权限的配置文件每组 controller 都需要一个 Scheme, Scheme 会提供 Kinds 与 Go types 之间的映射关系。
main.go 的功能相对来说比较简单: