Cron Jobs in Kubernetes
A lot of time, we need to run periodic jobs using Cron. Kubernetes is an amazing tool for it since it simplifies resource management by spinning up nodes in case of non availability of resources and releasing them in case of excess capacity.
Cron jobs can be deployed by referring to the below sample yaml and running kubectl apply -f
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: cron-job
namespace: "${namespace}"
spec:
schedule: "0/30 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: cron-jobs
image: "${repo}:${DRONE_BUILD_NUMBER}"
env:
- name: run_environment
value: ${run_environment}
restartPolicy: OnFailure
This runs the cron job every 30 minutes
Notes
- Use
envsubstto replace env variables in.ymlfile- Install it in debian using command
apt-get install gettext -y- Run the deploy in CI/CD using the command
cat deploy.yml|envsubst|kubectl apply -f -- We set
restartPolicy: OnFailureso that, it doesn't keep on restarting the job on completion of it.