1. Deploy the redis-sed helm chart on Rancher


    Deploying a Helm chart on a Rancher-managed Kubernetes cluster involves multiple steps. First, you'll need access to a Rancher server with permissions to manage Kubernetes clusters. You'll also need to have Helm installed and configured on your local machine or wherever you run Pulumi from. For the purpose of this exercise, we are assuming that you have a Rancher-managed Kubernetes cluster already up and running and that Helm is installed.

    In this guide, I'll show you how to deploy the redis-ha Helm chart onto a Rancher Kubernetes cluster using Pulumi's TypeScript API. We'll perform the following steps:

    1. Instantiate the Rancher2 provider using Pulumi.
    2. Create a namespace on the Kubernetes cluster managed by Rancher where the Redis chart will be deployed.
    3. Deploy the redis-ha Helm chart into the created namespace using Pulumi's helm.v3.Chart resource.

    Let's start with the TypeScript program below:

    import * as rancher2 from "@pulumi/rancher2"; import * as k8s from "@pulumi/kubernetes"; import * as pulumi from "@pulumi/pulumi"; // Set the Rancher2 provider by providing the necessary parameters const rancher2Provider = new rancher2.Provider("rancher", { apiVersion: "cluster.cattle.io/v3", accessToken: "your-rancher-access-token", // You'll need your Rancher API token here. url: "your-rancher-url", // This is the URL to your Rancher server. }); // Use the created Rancher provider to manage resources. // Creating a namespace on the Kubernetes cluster where the Redis chart will be deployed const namespace = new k8s.core.v1.Namespace("redis-namespace", { metadata: { name: "redis-ha" }, }, { provider: rancher2Provider }); // Deploy the redis-ha Helm chart using Pulumi const redisChart = new k8s.helm.v3.Chart("redis-ha", { chart: "redis-ha", version: "4.12.14", // Specify the version of the Helm chart you wish to deploy. namespace: namespace.metadata.name, fetchOpts: { // Replace with the URL of the repository where the Helm chart is located repo: "https://charts.bitnami.com/bitnami", }, }, { provider: rancher2Provider }); // Export the Redis service endpoint to access it externally. export const redisEndpoint = pulumi.interpolate`${redisChart.getResourceProperty("v1/Service", "redis-ha-redis-ha", "status")}`;

    Before running the above program, replace the placeholder your-rancher-access-token with your actual Rancher API token and your-rancher-url with the URL to your Rancher server.

    Here's a breakdown of what the code does:

    • The rancher2.Provider object is instantiated to interact with your Rancher-managed Kubernetes cluster.
    • We create a Kubernetes namespace object (k8s.core.v1.Namespace), using the instantiated Rancher provider, where the Redis chart will be deployed.
    • Next, we use Pulumi's helm.v3.Chart resource to deploy the redis-ha Helm chart to this namespace. The repo is the Helm repository where the redis-ha chart is located.
    • Finally, we export the redisEndpoint so that you can view the endpoint address of the Redis service after it has been deployed.

    Make sure that you have Pulumi installed, along with the necessary packages (@pulumi/rancher2 and @pulumi/kubernetes) and that your Pulumi CLI is logged in and configured. Once you have the Pulumi code ready, you can run it using the Pulumi CLI:

    • pulumi up to deploy the chart
    • pulumi stack output redisEndpoint to retrieve the deployed Redis service endpoint

    Please ensure you have the proper permissions set up in your Rancher environment to deploy the resources.