package
1.1.2
Repository: https://github.com/conku/worker.git
Documentation: pkg.go.dev

# README

Kubernetes Backend for QOR Worker

This package provides QOR worker's backend based on Kubernetes Job

Basic Usage

In the basic usage mode, we will collect currently running pod's information like containers, volumes to create a new job pod to complete your requests.

kubernetesBackend, err := kubernetes.New(&kubernetes.Config{})

Worker := worker.New(&worker.Config{
  Queue: kubernetesBackend,
})

Worker.RegisterJob(&worker.Job{
  Name: "Send Newsletter",
  Handler: func(argument interface{}, qorJob worker.QorJobInterface) error {
})

Advanced Usage

For advanced requirements, like manage job's priority, cpu/memory's requests/limits, you could customize Job's template based on your requirements.

For example:

func main() {
  kubernetesBackend, err := kubernetes.New(&kubernetes.Config{
    JobTemplateMaker: func(qorJob worker.QorJobInterface) string {
      // Job `process order` has higher priority than other jobs
      if qorJob.GetJobName() == "process_order" {
        return `
apiVersion: batch/v1
kind: Job
metadata:
  name: jobname
spec:
  template:
    spec:
      containers:
      - name: app
        image: my_image
      priorityClassName: high-priority
`
      }

      return `
apiVersion: batch/v1
kind: Job
metadata:
  name: jobname
spec:
  template:
    spec:
      containers:
      - name: app
        image: my_image
        resources:
          limits:
            cpu: "750m"
      priorityClassName: low-priority
`
    },
  })

  Worker := worker.New(&worker.Config{
    Queue: kubernetesBackend,
  })
}