All Projects → stefanprodan → kjob

stefanprodan / kjob

Licence: Apache-2.0 license
Kubernetes job runner

Programming Languages

go
31211 projects - #10 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to kjob

workr
Simple and easy to setup job runner for any kind of automation
Stars: ✭ 15 (-61.54%)
Mutual labels:  job-runner

kjob

e2e release

kjob is a small utility written in Go that:

  • creates a Kubernetes Job from a CronJob template
  • overrides the job command if specified
  • waits for job completion
  • prints the pods logs
  • removes the pods and the job object
  • exits with status 1 if the job failed

Usage

Download kjob binary from GitHub releases.

Create a suspended CronJob that will serve as a template:

cat <<EOF | kubectl apply -f -
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: curl
spec:
  schedule: "*/1 * * * *"
  successfulJobsHistoryLimit: 0
  failedJobsHistoryLimit: 0
  suspend: true
  jobTemplate:
    spec:
      backoffLimit: 0
      activeDeadlineSeconds: 100
      template:
        spec:
          restartPolicy: Never
          containers:
            - name: curl
              image: curlimages/curl:7.69.0
              command:
                - sh
                - -c
                - "curl -sL flagger.app/index.yaml | grep generated"
EOF

Run the job with:

$ kjob run -t curl -n default

generated: "2020-03-04T18:53:07.586083089Z"

Override the job command with:

$ kjob run -t curl -c "echo 'something went wrong' && grep tag"

something went wrong
error: Job has reached the specified backoff limit
exit status 1

List of available flags:

$ kjob run --help

Usage:
  kjob run -t cron-job-template -n namespace [flags]

Examples:
  run --template curl --command "curl -sL flagger.app/index.yaml" --cleanup=false --timeout=2m

Flags:
      --cleanup             delete job and pods after completion (default true)
  -c, --command string      override job command
  -h, --help                help for run
      --kubeconfig string   path to the kubeconfig file (default "~/.kube/config")
  -n, --namespace string    namespace of the cron job template (default "default")
      --shell string        command shell (default "sh")
  -t, --template string     cron job template name
      --timeout duration    timeout for Kubernetes operations (default 1m0s)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].