Skip to content

ContainerSolutions/delayed-jobs-operator

Repository files navigation

Delayed Job Operator

Delaying the start of Jobs until after a Unix Timestamp.

This might be useful if you need to do something at a specific time, once and then cleaned up.

Why not use a CronJob with a specific day / time set ?

CronJobs would achieve the goal of running at a specific time,
but still exist in the Kubernetes API.
If you list CronJobs, you could have a high noise vs. signal.
If you are running it only once, a CronJob might be a better idea.
This Operator exists for cases where many delayed jobs need to be created often or regularly.

Why not us a Job with a sleep statement.

This would create a pod running for the specified amount of time, and then run the job, which would solve the problem, but any pod rescheduling or restarts will reset the timer, and no guarantees can be made about the specific time when a job will be run.

Essentially a Job is missing the scheduling capability, and a CronJob is missing the TTL capability.

What this Operator tries to achieve is to add a scheduling component to a normal Job.

It will simply delay the execution of a Job until a specified time, also allowing extending that time by editing the .spec.delayUntil field.

Usage

The CRD for a delayed job is the same as a normal job, except for apiVersion, kind, and .spec.delayUntil

# New Version and kind
apiVersion: batch.container-solutions.com/v1alpha1
kind: DelayedJob
metadata:
  name: delayedjob-sample
spec:
  
  # New field to delay the job until a specific time
  delayUntil: 1637351107
  
  # The rest is identical to a normal Job, and in fact uses the same underlying constructs
  template:
    spec:
      containers:
        - name: pi
          image: perl
          command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never
  backoffLimit: 4

Installing the Operator

We have created a simplified bundle to install the Operator, which can easily be installed sing kustomize

kustomize build https://github.com/ContainerSolutions/delayed-jobs-operator.git/config/simple | kubectl apply -f -

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published