Cronjobs zijn alleen in te stellen vanaf de command-line, voor het instellen van een cronjob is het belangrijk om bekend te zijn met:
Een cronjob is een pod die wordt opgestart door openshift (ongeveer) volgens het tijdschema wat je hebt opgegeven onder schedule:. De cron-daemon draait zelf niet in deze container.
Een belangrijke kanttekening bij de scheduling van deze cron jobs is wat in het geval dat een job niet gestart kan worden. Standaard worden er uiteindelijk twee jobs gestart. Dit kun je anders inregelen door middel van deadlines, ConcurrencyPolicy en history limits. Het is sowieso erg wenselijk dat cron jobs die je aanmaakt in OpenShift idempotent zijn.
Een cron job configuratie bestaat uit de volgende onderdelen:
schedule volgens een standaard cron scheduling formatallow). De beschikbare policy's zijn:
Voorbeeld-code met toelichting:
apiVersion: batch/v1beta1 kind: CronJob metadata: name: voorbeeld spec: suspend: false concurrencyPolicy: Forbid failedJobsHistoryLimit: 1 # De schedule van de cron job, in dit voorbeeld wordt deze elke minuut uitgevoerd schedule: "*/1 * * * *" jobTemplate: spec: template: metadata: labels: parent: "cronjobvoorbeeld" spec: containers: - name: $image-php image: command: - php artisan schedule:run restartPolicy: OnFailure
Zoals gebruikelijk kun je via een yaml file (resource definition) de resource aanmaken die beschreven staat, in dit geval dus een cron job via:
oc create -f cronjob.yaml
Het bekijken van de status van cronjobs kan op een dezelfde manier als voor andere resources:
# bestaande cron jobs binnen een project opvragen oc get cronjob # de complete resource definition op vragen van een bestaande cron job in yaml-formaat oc get cronjob/$cron-job -o yaml # Eigenschappen opvragen van een bestaande cron job oc describe cronjob/$cron-job
Om logs te lezen moeten we weten wat de naam is van de pod welke de cronjob-taak heeft uitgevoerd.
oc get pods
Vervolgens kun je met: oc logs <naam van de cronjob die als laatste gedraaid heeft>
de logs terugzien van de cronjob. bijvoorbeeld:
oc logs cronjob-php-1234567-abc
Verder troubleshooten van de cronjob-container kan met oc debug of met oc rsh.
Verdere uitleg staat in de officiele openshift documentatie