Deploy the cloudwatch-exporter helm chart on Rancher
TypeScriptTo deploy a Helm chart on a Rancher-managed Kubernetes cluster using Pulumi, you can use the Pulumi Rancher2 provider. The provider allows you to manage resources in Rancher, and you can use the
CatalogV2
andAppV2
resources to install a Helm chart such ascloudwatch-exporter
.First, ensure that you have set up your Rancher environment and have the necessary credentials to interact with the Rancher API. You should also have Helm chart information, such as the chart's repository URL and version, readily available.
Below you will find a Pulumi program written in TypeScript that demonstrates how to deploy the
cloudwatch-exporter
Helm chart on a Kubernetes cluster managed by Rancher. Make sure to replace placeholder values with actual data relevant to your Rancher setup, such asclusterId
,namespace
,catalogName
, and other necessary parameters.import * as rancher2 from "@pulumi/rancher2"; // First, you must create a new rancher2 provider to interact with your Rancher server API. const rancherProvider = new rancher2.Provider("rancherProvider", { apiURL: "https://rancher.my-company.com/v3", // your Rancher API endpoint accessToken: "token-xxxx", // your access token secretKey: "secret-yyyy", // your secret key }); // Define the CatalogV2 resource, which represents a Helm chart's repository in Rancher. const catalog = new rancher2.CatalogV2("cloudwatchExporterRepo", { clusterId: "c-xxxxx", // your cluster ID url: "https://helm-repository-url.com", // URL of the Helm repository gitBranch: "main", // default branch of the Helm repository // Specify other properties like `name`, `insecure`, and `type` as needed. }, { provider: rancherProvider }); // Define the AppV2 resource, which represents an instance of the Helm chart in the cluster. const app = new rancher2.AppV2("cloudwatchExporter", { clusterId: "c-xxxxx", // your cluster ID namespace: "monitoring", // namespace where the app will be installed repoName: catalog.metadata.apply(meta => meta.name), // should match the catalog's name chartName: "cloudwatch-exporter", // name of the chart in the repository chartVersion: "x.y.z", // version of the chart you want to install // You can also specify values for the Helm chart using `valuesYaml`. // For example, if you need to customize the values for cloudwatch-exporter: // valuesYaml: ` // replicaCount: 1 // service: // type: ClusterIP // `, }, { provider: rancherProvider }); // Export the App URL if needed export const cloudwatchExporterAppUrl = app.status.apply(status => status.appUrl);
In this program:
- We initialize a new
rancher2.Provider
, which allows Pulumi to communicate with your Rancher server's API. - We create a
CatalogV2
resource representing the Helm chart's repository we want to use. You'll need to supply theclusterId
andurl
for the Helm repository you want to add. - We create an
AppV2
resource that represents the cloudwatch-exporter Helm chart deployed on the cluster. TheclusterId
andnamespace
are specified, along with therepoName
that references the previously defined catalog and thechartName
of the cloudwatch-exporter Helm chart. You also need to specify thechartVersion
.
Please adjust the placeholder values to match your Rancher environment and the specifics of the CloudWatch exporter Helm chart you wish to deploy. Once you've completed the setup, execute the Pulumi program with
pulumi up
, and Pulumi will handle the deployment to Rancher.Remember that the
valuesYaml
property allows you to provide a custom YAML configuration for your Helm chart. This is where you can specify any necessary configurations that thecloudwatch-exporter
chart expects.Finally, the
cloudwatchExporterAppUrl
export may not be relevant for a cloudwatch-exporter deployment since it typically doesn't serve a web UI, but it's shown here as an example of how to export information about deployed applications.- We initialize a new