--- apiVersion: batch/v1 kind: CronJob metadata: name: &app cloudflare-ddns namespace: kube-system spec: schedule: "@hourly" concurrencyPolicy: Forbid successfulJobsHistoryLimit: 1 failedJobsHistoryLimit: 2 jobTemplate: spec: ttlSecondsAfterFinished: 3600 template: spec: automountServiceAccountToken: false restartPolicy: OnFailure containers: - name: *app image: ghcr.io/onedr0p/kubernetes-kubectl:1.25.4@sha256:0d416e4095a476b900e93c8c818fbb17eda876709e3a00a4a3c7a725e95816ca envFrom: - secretRef: name: *app command: - "/bin/bash" - &scriptPath "/app/cloudflare-ddns.sh" volumeMounts: - name: *app mountPath: *scriptPath subPath: &scriptName cloudflare-ddns.sh readOnly: true volumes: - name: *app projected: defaultMode: 0775 sources: - configMap: name: *app items: - key: *scriptName path: *scriptName