Skip to content
This repository has been archived by the owner on Sep 9, 2022. It is now read-only.
/ DaemonJob Public archive

Go operator that implements kubernetes job work as daemonset

License

Notifications You must be signed in to change notification settings

Dysproz/DaemonJob

Repository files navigation

DaemonJob

Idea

This project is the response to problem that from time to time every Kubernetes developer come across - Resource that works like DaemonSet, but triggers Jobs instead.

Kubernetes from years hasn't resolved multiple issues submitions (like this one) so working on custom resource for contrail-operator I've came with an idea of kubernetes operator that implements custom resource DaemonJob.

Implementation

This is Kubernetes operator written in Go with support of operator-sdk so it managing pod running in target cluster as well as apply manifests with CRDs, RBAC etc.

Logic of DaemonJob is that all parameters are declared as for standard Job resource except for parrarel and completions fields which are filled based on number of applicable nodes (which you may control with for example nodeSelector). DaemonJob has Anti-affinity added so that on single node only one pod will be run. Having that connected together we achieve pretty much logic of DaemonSet.

The only disadvantage is restrictive policy of Job resource which does not allow to edit completions or parrarel fields on the go (or even a lot of pod spec values). Because of that with every such change DaemonJob has to delete and create new Job.

Deployment

This repository contains useful Makefile. In order to apply all required manifests onto cluster just run make install.

Afterwards, you'll need Pod with a manager running. You may create one with:

make deploy

NOTE: You may of course apply your own image (for example with edits necessary for your project). In that case just export IMG as your image (e.g. export IMG=dysproz/daemon-job).

And that's it. Now you may create your own manifests for DaemonJob and apply them to the cluster. Example manifest may be found under config/samples/dj_v1_daemonjob.yaml.

Builing your own image

In case you want to edit this code, build and then push your own image you may do that by:

  • exporting IMG variable `export IMG=[CONTAINER REPOSITORY]/[CONTAINER NAME]:[TAG]
  • building operator with make docker-build
  • pushing it to the registry (remember to first log in) make docker-push

About

Go operator that implements kubernetes job work as daemonset

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published