Deploy the kafka-topic-exporter helm chart on Rancher
TypeScriptTo deploy the
kafka-topic-exporter
Helm chart on a Rancher-managed Kubernetes cluster, you will use Pulumi to create a Helm Release. The process involves the following general steps:- Ensure you have access to a Rancher Kubernetes cluster.
- Import the required Pulumi packages for Rancher and Helm.
- Instantiate the Helm Release resource pointing to the
kafka-topic-exporter
chart.
Below is the program written in TypeScript that accomplishes this task. This program assumes that you have already configured your Pulumi environment with the necessary credentials to interact with your Rancher instance.
import * as rancher2 from "@pulumi/rancher2"; import * as k8s from "@pulumi/kubernetes"; // Reference to your Rancher cluster // You must ensure that you have the cluster ID available, which should be retrieved from your Rancher setup. const clusterId = "my-cluster-id"; // Replace with your actual Rancher Cluster ID // Create a Rancher2 provider instance that points to your target Rancher Kubernetes cluster const rancher2Provider = new rancher2.Provider("rancher", { apiUrl: "https://my-rancher.example.com/v3", // Replace with your Rancher API URL accessToken: "my-rancher-token", // Replace with your Rancher access token clusterId: clusterId, }); // Create an instance of the Kubernetes provider using credentials sourced from the Rancher provider const k8sProvider = new k8s.Provider("k8s", { kubeconfig: rancher2Provider.kubeconfig, }); // Create a new Helm chart instance for kafka-topic-exporter const kafkaTopicExporter = new k8s.helm.v3.Chart("kafka-topic-exporter", { chart: "kafka-topic-exporter", version: "x.y.z", // Specify the chart version you want to deploy fetchOpts:{ // Specify the repository containing the kafka-topic-exporter chart // This URL should point to the repository that houses the kafka-topic-exporter Helm chart repo: "https://charts.my-helm-repo.com", }, // Define values for the Helm chart as needed values: { "replicaCount": 1, // For example, you can set the number of replicas // Add other necessary configuration values here }, }, { provider: k8sProvider }); // Make sure to pass the Kubernetes provider pointing to your Rancher cluster export const kafkaTopicExporterName = kafkaTopicExporter.metadata.name; // Export the chart name to access it later
In the code above, the
rancher2.Provider
is used to interact with the Rancher API, using the provided access token and API URL to your Rancher environment. This provider instance retrieves the necessarykubeconfig
to allow Pulumi to deploy resources on the intended Kubernetes cluster.The
k8s.Provider
uses thiskubeconfig
to establish a connection to the Kubernetes API exposed by Rancher. With thek8s
provider initialized, you can now deploy Helm charts to the cluster.The
k8s.helm.v3.Chart
resource defined deploys thekafka-topic-exporter
Helm chart to your cluster, specifying the chart's name, version, and any necessary custom values that need to be applied on deployment. You may need to specify the correct Helm chart version and populate the values object with the required parameters for your particular setup.Remember to replace placeholders like
my-cluster-id
,https://my-rancher.example.com/v3
, andmy-rancher-token
with the actual values relevant to your Rancher setup. Additionally, the Helm chart versionx.y.z
and the chart repository URLhttps://charts.my-helm-repo.com
should be replaced with the appropriate values for thekafka-topic-exporter
chart.Finally, the name of the Helm release is exported as
kafkaTopicExporterName
, allowing you to reference the deployed chart if needed.