Trace Kubernetes Jobs and CronJobs with tracepusher

Install the tracepusher job operator to automatically generate OpenTelemetry traces for any Job and CronJobs on the cluster.
Prerequisites
First, make sure you have an OpenTelemetry collector running somewhere.
1. Install Custom Resource Definitions
Install the tracepusher CRDs:
kubectl apply -f https://raw.githubusercontent.com/agardnerIT/tracepusher/main/operator/crds.yml
2. Create One (or more) JobTracer Objects
A JobTracer should be created, one per namespace.
This defines the defaults for that namespace.
You can override the details on a per job basis.
cat <<EOF | kubectl create -f -
---
apiVersion: tracers.tracepusher.github.io/v1
kind: JobTracer
metadata:
  name: tracer
  namespace: default
spec:
  collectorEndpoint: "http://your-collector.namespace.svc.cluster.local:4318"
EOF
You can now kubectl get jobtracers.
3. Create a Job or CronJob
Now create a Job or CronJob as normal:
cat <<EOF | kubectl create -f -
---
apiVersion: batch/v1
kind: Job
metadata:
  name: pi
  namespace: default
  #annotations:
  #  tracepusher/ignore: "true"
  #  tracepusher/collector: "http://example.com:4318"
spec:
  template:
    spec:
      containers:
      - name: pi
        image: perl:5.34.0
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never
  backoffLimit: 0
EOF
Note the optional annotations. If set, these override the JobTracer settings.
Example 2: A Multi Container Job
tracepusher works with multi container jobs too:
cat <<EOF | kubectl create -f -
---
apiVersion: batch/v1
kind: Job
metadata:
  name: pi-multicontainer
  namespace: default
  #annotations:
  #  tracepusher/ignore: "true"
  #  tracepusher/collector: "http://example.com:4318"
spec:
  template:
    spec:
      containers:
      - name: first
        image: perl:5.34.0
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      - name: second
        image: perl:5.34.0
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(1000)"]
      restartPolicy: Never
  backoffLimit: 0
EOF