Deploy the chaoskube helm chart on Kubernetes
TypeScriptTo deploy the
chaoskube
Helm chart on a Kubernetes cluster using Pulumi, you'll use theChart
resource from the@pulumi/kubernetes
package. TheChart
resource allows you to instantiate a Helm chart and configure it with specified values.The
chaoskube
Helm chart periodically kills random pods in your Kubernetes cluster, which can be helpful for testing the resilience of your system.Below, you’ll find a Pulumi program written in TypeScript that demonstrates how to deploy the
chaoskube
chart. This program assumes that you have a Kubernetes cluster already running and accessible viakubectl
on your local machine, and that yourkubeconfig
file is set up correctly.First, I’ll go through a step-by-step explanation, and then I will provide you with the full code:
- Setup: You'll start by importing the necessary modules from the Pulumi library.
- Chart Resource: Instantiate a new Helm chart for
chaoskube
. You'll need to provide the chart name and optionally specify the chart version and repository. You can also provide additional configuration values as needed. - Export: You'll often want to export some details of the deployed resources; for example, you might export the namespace where
chaoskube
is deployed.
Here is the full Pulumi program that accomplishes the deployment:
import * as k8s from '@pulumi/kubernetes'; // Initialize a Helm chart for chaoskube const chaoskubeChart = new k8s.helm.v3.Chart('chaoskube', { chart: 'chaoskube', // Optional: Specify the Helm chart version you want to deploy version: '0.25.0', // Optional: If your Helm chart is in a custom repository, you specify the URL of the repository fetchOpts: { repo: 'https://helm.robusta.dev', }, // You can specify additional configuration values here values: { // For example, you can set the namespaces where chaoskube is allowed to operate namespaces: ['default'], // You can also configure the interval between kills, the time of day when killing is allowed, and so on interval: '60s', }, }); // Export the namespace in which chaoskube is installed export const chaoskubeNamespace = chaoskubeChart.getResourceProperty('v1/Namespace', 'chaoskube', 'metadata').apply(m => m.name);
This program creates and deploys an instance of
chaoskube
with the settings provided in thevalues
object to your Kubernetes cluster. Thechaoskube
chart will be fetched from the specified chart repository, and deployed via Pulumi when you runpulumi up
.