Kubernetes CronJob
CronJob, который сообщает о результате, а не молча уходит в Failed.
CronJob в кластере — самый молчаливый вид задач: под упал, job ушёл в Failed, и всё это видно только тому, кто в этот момент смотрит на кластер. Отчёт наружу снимает вопрос.
apiVersion: batch/v1
kind: CronJob
metadata:
name: nightly-report
spec:
schedule: "0 3 * * *"
timeZone: "Europe/Moscow"
concurrencyPolicy: Forbid
successfulJobsHistoryLimit: 3
jobTemplate:
spec:
backoffLimit: 2
template:
spec:
restartPolicy: Never
containers:
- name: job
image: your/image:latest
env:
- name: PING
valueFrom:
secretKeyRef:
name: tickwatch
key: ping-url
command: ["/bin/sh", "-c"]
args:
- |
set -o pipefail
wget -q -T 10 -O /dev/null "$PING/start" || true
if out=$(/app/run.sh 2>&1); then
echo "$out" | tail -c 10000 | \
wget -q -T 10 -O /dev/null --post-file=- "$PING" || true
else
code=$?
echo "$out" | tail -c 10000 | \
wget -q -T 10 -O /dev/null --post-file=- "$PING/$code" || true
exit $code
fiПочему секрет, а не ConfigMap
Ключ пинга — это право отчитаться за вашу задачу. Кто им владеет, может держать монитор зелёным, пока задача не выполняется. Данных он не раскрывает, но и в общий ConfigMap ему не место.