1. Answers
  2. Setting up a Cron Job in Kubernetes using Pulumi

How do I set up a cron job in Kubernetes using Pulumi?

In this guide, we will set up a cron job in Kubernetes using Pulumi. A cron job in Kubernetes allows you to run tasks on a schedule, similarly to how cron jobs work on Unix-like systems. We will create a cron job that prints a message every minute.

Key Points

  • We will use the @pulumi/kubernetes package to define Kubernetes resources.
  • The cron job will be scheduled to run every minute.
  • We will define the job template and the schedule in the cron job specification.

Here is the complete Pulumi program written in TypeScript:

import * as pulumi from "@pulumi/pulumi";
import * as k8s from "@pulumi/kubernetes";

// Define the namespace
const namespace = new k8s.core.v1.Namespace("my-namespace");

// Define the cron job
const cronJob = new k8s.batch.v1.CronJob("my-cron-job", {
    metadata: {
        namespace: namespace.metadata.name,
    },
    spec: {
        schedule: "*/1 * * * *", // Schedule to run every minute
        jobTemplate: {
            spec: {
                template: {
                    spec: {
                        containers: [{
                            name: "my-cron-job",
                            image: "busybox",
                            args: ["sh", "-c", "date; echo Hello from the Kubernetes cluster"],
                        }],
                        restartPolicy: "OnFailure",
                    },
                },
            },
        },
    },
});

// Export the namespace and cron job details
export const namespaceName = namespace.metadata.name;
export const cronJobName = cronJob.metadata.name;

Summary

In this example, we created a Kubernetes namespace and a cron job using Pulumi. The cron job is scheduled to run every minute and prints the current date and a message to the console. We defined the cron job’s schedule and job template in the spec field of the CronJob resource. The namespaceName and cronJobName are exported to provide easy access to these resource names.

This setup demonstrates how to use Pulumi to manage Kubernetes resources and automate recurring tasks using cron jobs.

Deploy this code

Want to deploy this code? Sign up for a free Pulumi account to deploy in a few clicks.

Sign up

New to Pulumi?

Want to deploy this code? Sign up with Pulumi to deploy in a few clicks.

Sign up