Skip to content

Jobs & Scheduled Tasks

Skipper wraps Kubernetes Jobs and CronJobs so you can run one-off tasks and scheduled jobs without writing YAML.

Running a one-off job

bash
kip job run --name db-migrate --image myapp:latest --command "npm run migrate" --project yourr-name --environment test
  Running job "db-migrate"...
  ✔  Job started
  Run 'kip job history db-migrate' to check the result

The job runs to completion in a new pod, then stops. It inherits env vars and secrets from the app of the same name if they exist.

Scheduling a recurring job

bash
kip job schedule --name nightly-cleanup --image myapp:latest --command "python cleanup.py" --cron "0 3 * * *" --project yourr-name --environment prod

Common cron expressions:

ExpressionMeaning
0 3 * * *Every day at 3am
*/15 * * * *Every 15 minutes
0 0 * * 0Every Sunday at midnight
0 9 * * 1-5Weekdays at 9am

Listing jobs

bash
kip job list --project yourr-name --environment test
  NAME                 TYPE       SCHEDULE             LAST RUN        STATUS
  nightly-cleanup      cronjob    0 3 * * *            8h ago          scheduled
  db-migrate           job                             2m ago          completed

Viewing history

bash
kip job history nightly-cleanup --project yourr-name --environment prod

Shows all past executions with timestamps and status (completed/failed/running).

Deleting a scheduled job

bash
kip job delete nightly-cleanup --project yourr-name --environment prod

Resource limits

Configure CPU and memory limits for your jobs from the Resources tab in the job detail panel. Click a job in the web console, switch to the Resources tab, and adjust the CPU and memory requests and limits.

Resource limits control how much CPU and memory each job pod is allowed to consume. Jobs that process large datasets or run memory-intensive tasks (database migrations, batch imports) may need higher limits than the defaults.

Changes apply to the next job run. They do not affect any execution that is already in progress.

How it works

  • One-off jobs create a Job Custom Resource (getkipper.com/v1alpha1). The reconciler creates a Kubernetes Job that runs to completion then stops.
  • Scheduled jobs create a Job CR with a cron schedule. The reconciler creates a Kubernetes CronJob that spawns a pod on each run.
  • Jobs get the same env vars and secrets as apps in their project/environment
  • No additional infrastructure needed. Kubernetes handles the scheduling natively.

Released under the Apache 2.0 License.