Overview
Cron Jobs in Qovery are Kubernetes workloads that run on a regular schedule. They are perfect for recurring tasks such as pulling data from external services periodically or processing accumulated data. Common Use Cases:- Pull data from external APIs at regular intervals
- Process and transform database data
- Generate scheduled reports
- Clean up old records
- Perform database backups
- Run maintenance scripts
Dedicated Cronjob Node Pool
On AWS EKS clusters with Karpenter, you can enable a dedicated cronjob node pool. When enabled, a Karpenter NodePool named
cronjob is created with a nodepool/cronjob: NoSchedule taint. Cronjob pods automatically receive the appropriate tolerations and node affinity to schedule on this nodepool, isolating them from other services running on shared nodes. See AWS EKS cluster resources for details on enabling and configuring this nodepool.Deployment Sources
Qovery supports two deployment sources for Cron Jobs:Git Repository
Qovery pulls your code from a Git repository, builds the application, and deploys it to your Kubernetes cluster. Supported Providers: GitHub, GitLab, BitbucketContainer Registry
Qovery pulls a pre-built container image from your configured registry and deploys it to your Kubernetes cluster.Creating a Cron Job
Configure Source
For Git Repository:
- Select Git provider
- Choose repository
- Select branch
- Specify root path (if not at repository root)
- Configure Dockerfile path
- Select configured registry
- Enter image name
- Specify image tag (not
latest)
Configure Job Settings
- CRON Schedule: Define when the job should run
- Timezone: Set timezone for schedule
- Entrypoint: Override container entrypoint (optional)
- CMD Arguments: Provide command arguments (optional)
- Restart Policy: Configure failure handling
- Max Duration: Set execution timeout
- Port: Configure if job exposes a port (optional)
Configuration
General Settings
Name: Unique identifier for your Cron Job within the environment Source Configuration:- Git: Provider, repository, branch, root path, Dockerfile
- Registry: Image name and specific tag
Job Configuration
CRON Schedule: Define when your job should run using CRON syntax:*/5 * * * *- Every 5 minutes0 * * * *- Every hour0 0 * * *- Daily at midnight0 2 * * 0- Weekly on Sunday at 2 AM
- Never: Job runs once per schedule (recommended for Cron Jobs)
- OnFailure: Automatically restart if job fails
Resources
- vCPU: CPU allocation in millicores (default: 500m)
- Memory: RAM allocation (default: 512MB)
Health Checks
Configure optional health checks:- Liveness Probe: Determines if container should be restarted
- Readiness Probe: Determines if container is ready to execute
Deployment Restrictions
Control when deployments should be triggered:- File path filters: Deploy only when specific files change
- Branch filters: Deploy only from specific branches
Force Run
Manually trigger a Cron Job execution outside its schedule:Force Run executions do not affect the regular schedule. The job will still run at its next scheduled time.
Clone Service
You can create a clone of the service via the clone feature. A new service with the same configuration will be created into the target environment.The target environment can be the same as the current environment or a different one in a completely different project.
Delete Cron Job
To delete a Cron Job:- Navigate to the Cron Job settings
- Click the three-dot menu → Delete
- Confirm deletion
Related Resources
Lifecycle Jobs
Run jobs triggered by environment lifecycle events
Environment Variables
Manage configuration and secrets for your jobs
Container Registry
Configure registries for container-based jobs
Advanced Settings
Configure advanced job options