Slide 31
Slide 31 text
31
▪ Reconcileメソッドに制御ループ内の処理を記述
//+kubebuilder:rbac:groups=batch.tutorial.kubebuilder.io,resources=cronjobs,verbs=get;list;watch;create;update;patch;delete
//+kubebuilder:rbac:groups=batch.tutorial.kubebuilder.io,resources=cronjobs/status,verbs=get;update;patch
//+kubebuilder:rbac:groups=batch,resources=jobs,verbs=get;list;watch;create;update;patch;delete
//+kubebuilder:rbac:groups=batch,resources=jobs/status,verbs=get
func (r *CronJobReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
var cronJob batch.CronJob
r.Get(ctx, req.NamespacedName, &cronJob)
var childJobs kbatch.JobList
r.List(ctx, &childJobs, client.InNamespace(req.Namespace), client.MatchingFields{jobOwnerKey: req.Name})
// ...Jobのstatus確認、完了Jobのカウントなど...
r.Status().Update(ctx, &cronJob)
// ...Jobの開始判定など...
job, err := constructJobForCronJob(&cronJob, missedRun)
r.Create(ctx, job)
scheduledResult := ctrl.Result{RequeueAfter: nextRun.Sub(r.Now())}
return scheduledResult, nil
}
CronJob, Jobへの
RBAC設定
CronJobの取得
Jobの取得
CronJobのstatusを更新
新しいJobを作成
次のエンキュー時刻を指
定して終了