Deploy the instana-agent-operator helm chart on Rancher
TypeScriptTo deploy the
instana-agent-operator
helm chart on Rancher using Pulumi, you will need to write a Pulumi program in TypeScript that will use therancher2
Pulumi provider to interact with your Rancher instance.The Pulumi program will consist of the following high-level steps:
- Initialize a new Pulumi project and configure it for TypeScript.
- Import the necessary Pulumi packages, including the
rancher2
provider. - Establish credentials to connect to your Rancher server.
- Define a
CatalogV2
Pulumi resource to add the Instana helm chart repository to your Rancher instance. - Deploy the
instana-agent-operator
helm chart using theAppV2
resource from therancher2
provider.
Below is a detailed TypeScript program that demonstrates how to perform these steps:
import * as pulumi from "@pulumi/pulumi"; import * as rancher2 from "@pulumi/rancher2"; // Step 1: Connect to Rancher // Replace `your-rancher-server-url` and other placeholders with the actual data. // Ensure the Rancher API token has the correct permissions. const rancher2Config = { apiUrl: "your-rancher-server-url", // Your Rancher Server API URL tokenKey: "your-rancher-api-token", // Your Rancher API token clusterId: "your-cluster-id", // Your target Kubernetes cluster ID }; const provider = new rancher2.Provider("rancherProvider", rancher2Config); // Step 2: Add the Instana helm chart repository to Rancher. // Replace `instana-agent` and other placeholders with actual values for the Instana helm chart repository. const catalog = new rancher2.CatalogV2("instana-agent-catalog", { clusterId: rancher2Config.clusterId, url: "https://helm.instana.io", // The Helm chart repository URL for Instana gitBranch: "main", // The branch, commit, tag, or reference in the repository. Default branch will be used if not set. }, { provider }); // Step 3: Deploy the instana-agent-operator helm chart using the AppV2 resource // Replace `your-chart-name`, `your-namespace`, etc., with actual values specific to your environment. const instanaChart = new rancher2.AppV2("instana-agent-operator", { clusterId: rancher2Config.clusterId, namespace: "instana", // The namespace where the Instana agent should be installed projectId: "c-l6gqf:p-9q5p8", // The project ID where the app should be installed repoName: "instana-agent-catalog", // The name of the catalog that was added in the previous step chartName: "instana-agent-operator", // The name of the chart in the repository chartVersion: "latest", // The version of the chart to deploy, use "latest" for the newest version values: { // Add any custom values.yaml key-value pairs here required for the Instana agent configuration } }, { provider, dependsOn: [catalog] }); // Optional: Export any outputs you might want to use elsewhere export const instanaChartName = instanaChart.name; export const instanaChartVersion = instanaChart.chartVersion;
Explanation of what this Pulumi program does:
- It imports the necessary Pulumi packages. Here we're using the
@pulumi/rancher2
package to work with Rancher. - We create a Rancher provider instance to connect to our Rancher server using the API URL and a token.
- We declare a
CatalogV2
resource to let Rancher know where to find the Instana Helm chart. - We declare an
AppV2
resource to deploy theinstana-agent-operator
Helm chart to the specified cluster. - Optionally, we export some of the resulting resource properties for use in other parts of our Pulumi program or outputs.
Replace the placeholder comments with actual values that correspond to your Rancher setup and the Instana Helm chart you want to install. Once you have updated the placeholders and configured your Pulumi and Kubernetes environments, you can deploy this program using the Pulumi CLI by running
pulumi up
from the command line in the same directory where this Pulumi TypeScript file is located.