1. Deploy the ublhub helm chart on Rancher


    Deploying a Helm chart on Rancher using Pulumi involves several steps. First, you need to set up Rancher and configure access to it. Once that's done, you can deploy a Helm chart to a Rancher-managed Kubernetes cluster.

    Pulumi provides a rancher2 package which you can use to interact with Rancher. In this guide, I'll show you how to deploy a Helm chart called ublhub to a cluster in Rancher.

    Here's what we need to do:

    1. Set up a Rancher client to interact with your Rancher server.
    2. Retrieve an existing Kubernetes cluster managed by Rancher or create a new one if necessary.
    3. Deploy the ublhub Helm chart to the cluster using rancher2.App resource.

    Let's first install the necessary dependencies:

    # Install the Pulumi Rancher2 provider plugin pulumi plugin install resource rancher2 v5.1.1 # Install the rancher2 package from npm npm install @pulumi/rancher2

    Here's the TypeScript program that illustrates these steps:

    import * as pulumi from "@pulumi/pulumi"; import * as rancher2 from "@pulumi/rancher2"; // Step 1: Create a new Rancher client const rancherClient = new rancher2.Client("my-client", { apiURL: "https://your-rancher-api-url", accessToken: "your-access-token", customCaCerts: "your-custom-ca-certs-if-needed", }); // Step 2: Use an existing Rancher-managed Kubernetes cluster // To create a new Kubernetes cluster in Rancher, you would use a `rancher2.Cluster` resource. // In this example, we're assuming the cluster already exists. const cluster = rancher2.getCluster({ name: "existing-cluster-name", }); // Step 3: Deploy the ublhub Helm chart to the cluster const ublhubChart = new rancher2.App("ublhub", { catalogName: "helm", // The name of the catalog in Rancher that contains the chart. Adjust as necessary. projectName: pulumi.output(cluster).apply(cluster => cluster.defaultProjectId), // Use the default project of the cluster. name: "ublhub", // Name of the app deployment. targetNamespace: "ublhub-namespace", // Kubernetes namespace to deploy the app into. Adjust as necessary. chart: "ublhub", // The name of the chart in the catalog. version: "1.0.0", // The version of the chart to deploy. Adjust as needed. values: {}, // Provide your chart values here. // Add more configuration if necessary, according to the chart's requirements and your needs. }, { provider: rancherClient }); // Export the name of the cluster and the deployed app name export const rancherClusterName = cluster.name; export const ublhubAppName = ublhubChart.name;

    In this program:

    • You should replace "your-rancher-api-url", "your-access-token", "existing-cluster-name", "helm", "ublhub-namespace", and "1.0.0" with the actual values for your setup.
    • The rancher2.Client resource sets up the connection to your Rancher server using the provided API URL and access token.
    • The rancher2.getCluster function retrieves information about an existing Kubernetes cluster managed by Rancher.
    • The rancher2.App resource deploys the Helm chart. You need to specify which catalog the chart is in and the name of the project that the cluster is associated with.

    Remember to install and set up the Pulumi CLI with appropriate access to your cloud provider and any necessary credentials before running this program. You can then deploy this Pulumi program using the following commands:

    pulumi up # Deploys the program

    And to remove the deployed resources:

    pulumi destroy # Removes the deployed resources

    Please adjust any values such as chart version, values, and other configurations to match the ublhub chart's requirements and your desired state. The Pulumi program is declarative, so it describes the desired state, and Pulumi's engine makes the necessary API calls to achieve that state on Rancher.