1. Deploy the kudo helm chart on Kubernetes


    To 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 the repo and potentially authentication details for that repository. Alternatively, if you have the chart locally, you would use the path 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.