Deploy the cron helm chart on Kubernetes
TypeScriptTo deploy a Helm chart on Kubernetes using Pulumi, you'll need to have a Kubernetes cluster up and running. Assuming you have that in place and Pulumi CLI installed on your machine, the following program can be used to deploy a cron job using a Helm chart.
Pulumi's
@pulumi/kubernetes
package provides an abstraction for deploying Helm charts with theChart
resource. This resource allows you to deploy a Helm chart from a repo or a local path and configure it usingvalues
, which are inputs that customize the behavior of the Helm chart.Here is a Pulumi program written in TypeScript that demonstrates how to use the
Chart
resource to deploy a cron job on Kubernetes. I'll explain each section of the code after the complete listing.import * as k8s from "@pulumi/kubernetes"; const stackConfig = new k8s.core.v1.ConfigMap("stack-config", { metadata: { name: "my-cronjob-config" }, data: { "schedule": "*/5 * * * *", // Every 5 minutes }, }); const cronJobChart = new k8s.helm.v3.Chart("my-cronjob", { chart: "stable/cronjob", version: "0.1.0", // Replace with the desired chart version namespace: "default", values: { // Replace these with actual values from the specific cronjob chart image: "my-cronjob-image", tag: "latest", pullPolicy: "Always", schedule: stackConfig.data["schedule"], }, }, { dependsOn: [stackConfig] }); export const cronJobChartName = cronJobChart.metadata.apply(m => m.name);
Explanation
-
We start by importing the Pulumi Kubernetes package:
import * as k8s from "@pulumi/kubernetes";
This package contains the necessary classes and functions to interact with Kubernetes resources.
-
We define a
ConfigMap
resource that stores our cron job configuration:const stackConfig = new k8s.core.v1.ConfigMap("stack-config", { //... });
Here, we are setting a schedule for the cron job. You would replace the
"schedule"
indata
with the appropriate cron schedule string for your job. -
Next, we create an instance of
k8s.helm.v3.Chart
which represents a Helm chart deployment:const cronJobChart = new k8s.helm.v3.Chart("my-cronjob", { //... }, { dependsOn: [stackConfig] });
This snippet demonstrates the deployment of a Helm chart located in the
stable
repository with the namecronjob
. You'll need to replace"stable/cronjob"
with the correct repository and chart name for your desired cron job chart. -
We specify
version
to point to the version of the chart you want to deploy. -
In the
values
object, we pass configuration parameters that the cron job chart accepts. These values would depend on the specific Helm chart you are using. Replace"my-cronjob-image"
with the Docker image you want the cron job to run and configure other properties as needed. -
We use the
dependsOn
option to ensure that Pulumi deploys theConfigMap
before it attempts to deploy the Helm chart. -
Finally, we export the name of the deployed cron job chart as an output of our Pulumi program:
export const cronJobChartName = cronJobChart.metadata.apply(m => m.name);
You would run this Pulumi program with the
pulumi up
command, which creates or updates resources in your Kubernetes cluster to match the desired state specified in the code.Please remember to replace placeholders like
stable/cronjob
,0.1.0
,my-cronjob-image
,latest
, and the values within theschedule
with the actual values that are relevant to your cron job Helm chart and the specific configuration it requires.For more information on Pulumi's Kubernetes support, you can refer to the official Pulumi Kubernetes documentation. And for Helm chart deployments with Pulumi, check the Pulumi Helm Chart documentation.
-