Deploy the kudo helm chart on Kubernetes
TypeScriptTo deploy a Helm chart on a Kubernetes cluster with Pulumi, we will use the
kubernetes.helm.v3.Chart
resource. This Pulumi resource allows you to deploy Helm charts into a Kubernetes cluster. Helm is a package manager for Kubernetes that packages multiple Kubernetes resources into a single logical deployment unit called a chart.Below is a Pulumi TypeScript program that deploys a Helm chart named "kudo" into a Kubernetes cluster. Before running this code, ensure that you have configured Pulumi with access to your Kubernetes cluster and that the Helm CLI is installed on your machine since Pulumi will use it to fetch and install the Helm chart.
import * as k8s from "@pulumi/kubernetes"; // Create an instance of the kudo Helm chart. const kudoChart = new k8s.helm.v3.Chart("kudo", { // Specify the chart repository and version here. // If the chart is from a public repository, you can use `repo` to specify the repository URL. // If it's a local chart, you can use the `path` property to specify the path to the chart directory. // This example assumes "kudo" is available in the default Helm chart repositories. chart: "kudo", // Set the version of the chart you wish to deploy. // version: "x.y.z", // You can also specify the namespace where the chart should be deployed. If not specified, it uses the default namespace. namespace: "default", // If your chart requires custom values, you can specify them as an object. // values: { // key: "value", // anotherKey: "anotherValue", // }, }); // Export the name of the chart. export const chartName = kudoChart.metadata.apply(m => m.name);
Here's a walkthrough of what the program is doing:
- We start by importing the Kubernetes package from Pulumi, which contains the necessary components to interface with our Kubernetes cluster.
- We create a new instance of the
kubernetes.helm.v3.Chart
resource. This is how we tell Pulumi to deploy a Helm chart. We name our chart instance "kudo". - We specify the
chart
property as "kudo". If your Helm chart is in a private repository, you will also need to provide therepo
and potentially authentication details for that repository. Alternatively, if you have the chart locally, you would use thepath
property instead. - Optionally, you can specify the version of the chart you wish to deploy using the
version
property. - Helm charts can be deployed into specific Kubernetes namespaces by setting the
namespace
property. If this isn't set, it defaults to the "default" namespace. - Many Helm charts require additional configuration values for customization. These can be supplied via the
values
property as an object of key-value pairs. This example leaves it commented out as placeholders for you to add if needed. - Finally, we export the name of the Helm chart as a stack output with
export const chartName
, allowing us to know the name Pulumi assigns to the chart resource.
Before you can apply this Pulumi program, remember to setup your Kubernetes cluster configuration context properly so Pulumi can interact with your cluster. You can usually do this by running
kubectl config use-context
with the name of the cluster context you wish to use.Once you have your Kubernetes cluster set up, you would run
pulumi up
to deploy this chart. If you're using a CI/CD system, you'd integrate this step into your pipeline.