Deploy the strimzi-drain-cleaner helm chart on Kubernetes
TypeScriptTo deploy the Strimzi Drain Cleaner using Pulumi and Helm, we'll be utilizing the
Chart
resource from the Pulumi Kubernetes provider. Helm is a package manager for Kubernetes, and it simplifies the deployment of applications. A Helm chart is a collection of files that describe a related set of Kubernetes resources.The Strimzi Drain Cleaner is a Kubernetes Operator which helps to properly drain Kafka pods before Kubernetes nodes are terminated – for example, as part of a Kubernetes upgrade or scale down. We will use Pulumi to deploy this Helm chart onto your Kubernetes cluster.
Below is a TypeScript program that you can use with Pulumi to deploy the Strimzi Drain Cleaner.
import * as k8s from '@pulumi/kubernetes'; // Create a Kubernetes Namespace const ns = new k8s.core.v1.Namespace("strimzi-drain-cleaner-ns", { metadata: { name: "strimzi-drain-cleaner", }, }); // Deploy Strimzi Drain Cleaner Helm chart const strimziDrainCleanerChart = new k8s.helm.v3.Chart("strimzi-drain-cleaner", { namespace: ns.metadata.name, chart: "strimzi-drain-cleaner", // You can specify the exact chart version you want to deploy version: "0.1.0", fetchOpts: { repo: "https://strimzi.io/charts/", }, }, { dependsOn: [ns] }); // Export the namespace name export const namespaceName = ns.metadata.name;
Here's the breakdown of this program:
- We import the necessary Pulumi Kubernetes package.
- We create a Kubernetes namespace where the Strimzi Drain Cleaner will be deployed. Namespaces help you organize your Kubernetes objects and can provide a scope for resource names.
- We create a new Helm chart resource using the
Chart
class from Pulumi's Kubernetes provider. In this step, we also set the chart name (strimzi-drain-cleaner
), version, and Helm repository. The Helm chart is fetched from the Strimzi's charts repository. - We add a dependency to the
Chart
resource to ensure the namespace is created before attempting to deploy the Helm chart within it. This is achieved with thedependsOn
option. - Finally, we export the namespace name as a stack output for easy access.
Before using this code, make sure you have Pulumi installed on your machine, along with the Kubernetes CLI tool
kubectl
configured with access to your Kubernetes cluster. Save the above code into a file calledindex.ts
and deploy it using the Pulumi CLI through the following commands:pulumi stack init strimzi-drain-cleaner-stack pulumi up
The
pulumi stack init
command initializes a new stack for your project (a stack is an isolated, independently configurable instance of a Pulumi program). Thepulumi up
command creates or updates resources in a stack according to the Pulumi program inindex.ts
. After successful deployment, thepulumi up
command will output the namespace name where the Strimzi Drain Cleaner is deployed.When you are done with the Strimzi Drain Cleaner and wish to clean up the resources, you can use the following command,
pulumi destroy
This will tear down the resources you have provisioned with this Pulumi program. Remember to confirm the destruction in the CLI prompt for each resource.