Deploy the postgresql-persistent helm chart on Rancher
TypeScriptTo deploy the
postgresql-persistent
Helm chart on Rancher using Pulumi, you'll need to use therancher2
Pulumi provider. The provider enables you to interact with Rancher's resources, such as catalogs, apps, and, in your case, deploying a Helm chart. Thepostgresql-persistent
Helm chart isn't provided by the Pulumi registry directly, but you can deploy any Helm chart available in the Helm repositories that Rancher can access.Here's a step-by-step explanation and corresponding Pulumi TypeScript code that deploys the
postgresql-persistent
Helm chart.- Set up the Rancher Provider: This interacts with your Rancher API.
- Create a Catalog: Some charts require a catalog, it's like adding a "repository" in Helm terminology.
- Deploy the Helm Chart: Set up appropriate configuration values for the chart and deploy it within Rancher.
Make sure you have permissions to access the Rancher API and install Helm charts before you continue.
Here's the code that does this:
import * as rancher2 from "@pulumi/rancher2"; // Initialize the Rancher provider const provider = new rancher2.Provider("rancher", { apiUrl: "<RANCHER_API_URL>", // Replace with your Rancher API URL accessKey: "<RANCHER_ACCESS_KEY>", // Replace with your Rancher access key secretKey: "<RANCHER_SECRET_KEY>", // Replace with your Rancher secret key }); // Create a new catalog in Rancher to establish where Helm charts are located. // Replace HELM_REPO_URL with your Helm chart repository URL const catalog = new rancher2.CatalogV2("postgresql-helm-catalog", { url: "<HELM_REPO_URL>", clusterId: "<RANCHER_CLUSTER_ID>", // ID of the cluster where you want to deploy }, { provider: provider }); // Deploy the postgresql-persistent helm chart const postgresqlApp = new rancher2.AppsV1("postgresql-persistent", { catalogName: catalog.name, templateName: "postgresql-persistent", templateVersion: "<CHART_VERSION>", // Replace with the desired chart version clusterId: "<RANCHER_CLUSTER_ID>", // ID of the cluster where you want to deploy project_id: "<RANCHER_PROJECT_ID>", // Replace with the ID of Rancher project targetNamespace: "default", // Specify the namespace where postgresql should be installed values: ` persistence: storageClass: "default" # Replace with your storage class size: 10Gi auth: database: "mydatabase" username: "postgres" password: "<DATABASE_PASSWORD>" # Replace with your database password `, }, { provider: provider }); // Export the name of the deployed postgresql app export const postgresqlAppName = postgresqlApp.name;
Make sure to replace placeholder values including
<RANCHER_API_URL>
,<RANCHER_ACCESS_KEY>
,<RANCHER_SECRET_KEY>
,<HELM_REPO_URL>
,<CHART_VERSION>
,<RANCHER_CLUSTER_ID>
,<RANCHER_PROJECT_ID>
, and<DATABASE_PASSWORD>
with actual values for your setup. Thevalues
string is a small snippet of YAML configuration specific to the PostgreSQL chart; this will likely need to be expanded or modified to match the exact configuration parameters your deployment requires.The
rancher2.Provider
is crucial as it configures Pulumi to use your specific Rancher instance, whilerancher2.CatalogV2
registers the Helm repository/catalog with Rancher.Lastly,
rancher2.AppsV1
represents the deployed Helm chart in Rancher. Thevalues
field contains configuration details for PostgreSQL, such as the persistence options and authentication details.You can run this code using Pulumi by creating a new Pulumi project, pasting this into
index.ts
, and executing it with the CLI commandspulumi up
. Please make sure that you've installed necessary tools such as Pulumi CLI and logged in to your account.Finally, this script assumes you're using Rancher 2.x. If you're using a different version, the code might need adjustments to match API changes.