kbebuilder CronJob

简介

CronJob controller 会控制 kubernetes 集群上的 job 每隔一段时间运行一次,它是基于 Job controller 实现的,Job controller 的 job 只会执行任务一次。

创建项目

mkdir project
cd project
kubebuilder init --domain tutorial.kubebuilder.io --repo tutorial.kubebuilder.io/project

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 等相关的配置文件。

main.go 解析

每组 controller 都需要一个 Scheme, Scheme 会提供 Kinds 与 Go types 之间的映射关系。

main.go 的功能相对来说比较简单: