Deploy the tt-workflow helm chart on Rancher
TypeScriptDeploying a Helm chart on Rancher using Pulumi involves several steps, including setting up Pulumi with the proper provider, creating an instance of Rancher, and deploying the Helm chart.
Prerequisites
Before we begin, ensure that you have the following prerequisites:
- An existing Rancher server or environment you can control.
- Necessary permissions to create and manage resources in your Rancher environment.
- Pulumi CLI installed on your machine.
- Configured Pulumi to connect to your cloud provider.
- Helm chart details of
tt-workflow
, i.e., the repository URL and chart version.
Explanation
Firstly, we need the
rancher2
Pulumi provider, which allows us to interact with a Rancher instance to manage its resources. Note that actual deployment of the Rancher server itself is not typically handled by Pulumi; rather, we use Pulumi to manage resources within an already running Rancher environment.In this program, we'll use
rancher2.AppV2
to deploy a Helm chart. This resource type represents a Helm chart deployment in Rancher, identical tohelm install
orhelm upgrade
commands.I'll guide you through a Pulumi TypeScript program that will deploy the
tt-workflow
Helm chart on a Rancher cluster.The Pulumi Program
import * as pulumi from '@pulumi/pulumi'; import * as rancher2 from '@pulumi/rancher2'; // Initialize a Pulumi program const main = async () => { // Create a new Rancher2 App which deploys a Helm chart const ttWorkflowApp = new rancher2.AppV2('tt-workflow-chart', { // Specify the namespace where the app should be deployed namespace: 'your-namespace', // Replace with your namespace // Reference to the Kubernetes cluster to deploy to // You will need to provide the relevant cluster ID here clusterId: 'your-cluster-id', // Replace with your actual cluster ID // Details of the Helm chart to deploy repoName: 'your-repo-name', // Replace with the repository name where `tt-workflow` is located chartName: 'tt-workflow', // The name of the chart to deploy chartVersion: 'your-chart-version', // Replace with the version of the chart you want to deploy // Values to pass to the Helm chart, equivalent to `values.yaml` or `--set` // Provide the relevant values as per the Helm chart requirements values: ` someKey: someValue nestedKey: nestedValue: value `, }); // Export the app name return { appName: ttWorkflowApp.metadata.apply(meta => meta.name), }; }; // Run the Pulumi program main().then(outputs => { // When the app is deployed, this will print the name of the app console.log(`App Name: ${outputs.appName}`); });
This program will create an instance representing the
tt-workflow
Helm chart deployment in Rancher. Be sure to replace placeholders likeyour-namespace
,your-cluster-id
,your-repo-name
,your-chart-version
, and the values undervalues
with actual information according to your Rancher setup andtt-workflow
Helm chart details.The
values
is a string that should be formatted as YAML, analogous to what you would find in a Helm chart'svalues.yaml
file, or what you would pass to thehelm
CLI with the--set
flag. These values allow you to customize the deployment of the Helm chart.The
appName
is exported as output from the Pulumi program. This might correspond to a stack output, allowing insight into the resources created by the Pulumi program.Next Steps
After writing and saving the program to
index.ts
, run following commands in the directory where you saved it:pulumi up
to initiate the deployment.- Review the plan shown by Pulumi and approve it, confirming that it will deploy the resources as expected.
- Once applied, Pulumi will show you the output (in this case, the app name).
Remember, managing infrastructure as code with Pulumi is very powerful and allows you to version, share, and reuse your configurations easily.