1. Deploy the argo-workflow helm chart on Linode Kubernetes Engine


    Deploying a Helm chart with Pulumi involves several steps:

    1. Setting up a Kubernetes cluster: Before deploying the Helm chart, you need to have a Kubernetes cluster up and running. I see you want to use the Linode Kubernetes Engine (LKE). At this time, Pulumi does not have a dedicated Linode provider, however you can use any existing Kubernetes cluster including one provided by LKE. The assumption here is that you've already provisioned an LKE cluster and have the kubeconfig file accessible on your machine.

    2. Installing the Pulumi CLI and Setup: Ensure that you have the Pulumi CLI installed and that you are logged into a Pulumi backend to store your state.

    3. Using Helm in Pulumi: With Pulumi, you can install Helm charts into a Kubernetes cluster using the Chart resource from the @pulumi/kubernetes package. The Chart resource is a high-level component that uses the Helm technology to deploy applications and services onto a Kubernetes cluster.

    Here is a TypeScript program that deploys the Argo Workflows Helm Chart to an existing Kubernetes cluster. Before running the program, ensure you have selected the appropriate Pulumi stack where your Kubernetes cluster configuration (like kubeconfig) is stored.

    import * as k8s from "@pulumi/kubernetes"; const argoChart = new k8s.helm.v3.Chart("argo-workflows", { chart: "argo-workflows", version: "latest", // specify the version of the chart you wish to deploy fetchOpts: { repo: "https://argoproj.github.io/argo-helm", // Argo Helm repo URL }, // values for the Helm chart can be specified here. For example, if you wanted to modify the executor image: values: { executor: { image: "argoproj/argoexec", tag: "latest", }, }, }); export const argoWorkflowsUrl = argoChart.getResourceProperty("v1/Service", "argo-workflows-server", "status").apply(status => `http://${status.loadBalancer.ingress[0].ip}:2746`);

    This script does the following:

    • Imports the Kubernetes package from Pulumi to use Kubernetes resources.
    • Creates an instance of a Helm Chart (argo-workflows) corresponding to Argo Workflows.
    • Specifies the chart name, version, and repository from where to fetch the chart. You can pin a specific chart version for stable deployments.
    • You can pass custom values to the Helm chart via the values object. This is useful for configuring the Helm chart to meet your specific configuration needs.
    • Exports the URL that you can use to access the Argo Workflows UI. This URL will depend on your Kubernetes cluster's service and ingress setup.

    To run this program:

    1. Save the code to a file, for example index.ts.
    2. Run pulumi up to execute the code and create the resources.

    Remember to have your kubeconfig file configured correctly for the LKE cluster so the Pulumi program knows where to deploy the Helm chart. If you're using a stack that already has Kubernetes cluster configuration set up, Pulumi will use that configuration. Otherwise, you may need to manually configure Pulumi to use your kubeconfig.

    The argoWorkflowsUrl will gather the necessary information to form a URL once the service is provisioned and an IP is assigned by LKE. If your LKE setup doesn't automatically provision LoadBalancers, you might want to setup ingress controllers or use a different service type.