Deploy the weird helm chart on Opensshift
TypeScriptTo deploy a Helm chart to an OpenShift cluster with Pulumi, you'll want to use the
kubernetes.helm.v3.Chart
resource from the Pulumi Kubernetes provider. This resource allows you to deploy a Helm chart from a variety of sources, such as a chart repository or a local directory. To interact with your OpenShift cluster, you'll need to havekubectl
configured to point to the cluster, and your Pulumi program will leverage this configuration.Before we dive into the Pulumi program, there are a few key concepts and steps to understand:
-
Pulumi Project and Stack: You will need a Pulumi project with a stack configured. A stack is an isolated, independently configurable instance of a Pulumi program. It typically represents a stage of development, such as
production
ordevelopment
. -
Kubernetes Provider: Pulumi uses providers to manage resources. In this case, we'll use the Pulumi Kubernetes provider to interact with your OpenShift cluster.
-
Helm Chart Resource: The
kubernetes.helm.v3.Chart
resource is a custom Pulumi resource that deploys a Helm chart to a Kubernetes cluster. -
Helm Chart Properties: When deploying a Helm chart, you can specify various properties such as the
repo
where the chart is hosted, theversion
of the chart, and any customvalues
to override default settings in the chart.
Now, let's look at the Pulumi TypeScript program to deploy the "weird" Helm chart to an OpenShift cluster:
import * as k8s from "@pulumi/kubernetes"; // Replace these values with the details of the Helm chart you want to deploy. const chartRepo = "https://charts.example.com/"; // The URL of the Helm chart repository. const chartName = "weird"; // The name of the chart in the repository. const chartVersion = "1.2.3"; // The version of the chart to deploy. const namespace = "default"; // The target namespace to deploy the Helm chart in. // Deploying a Helm chart to the OpenShift cluster. const weirdChart = new k8s.helm.v3.Chart("weird-chart", { chart: chartName, version: chartVersion, fetchOpts: { repo: chartRepo, }, namespace: namespace, // Values here are placeholders; replace them with actual values or configuration needed for the Helm chart. values: { service: { type: "ClusterIP", }, replicaCount: 1, }, }, { provider: new k8s.Provider("openshift", { kubeconfig: process.env.KUBECONFIG }) }); // Export the chart's status URL, if applicable. export const chartStatusUrl = weirdChart.getResourceProperty("v1/Service", "weird-service", "status.loadBalancer.ingress[0].hostname");
Here's a breakdown of the main parts of the program:
-
Imports: We import the Pulumi Kubernetes package to manage resources in Kubernetes.
-
Chart Repository Configuration: Set the
chartRepo
,chartName
, andchartVersion
variables to match the Helm chart details you want to deploy. -
Namespace: Define the target namespace where the Helm chart will be deployed. If it doesn't exist, you need to create it.
-
Helm Chart Deployment: The
k8s.helm.v3.Chart
resource is instantiated with the name "weird-chart". We specify the chart name, version, repository URL, target namespace, and any overrides for default values. -
Provider: A specific provider instance is created for OpenShift with the given
kubeconfig
. This allows Pulumi to authenticate and interact with your OpenShift cluster. -
Exported Values: If your Helm chart creates a service with an external endpoint, you might want to export this URL for easy access.
Before running this Pulumi program, ensure you have set up and authenticated the Pulumi CLI and the
kubectl
CLI on your machine, and ensure thatkubectl
is pointed to your OpenShift cluster with the proper permissions to deploy applications.You will also need to swap the placeholder values with actual values corresponding to your "weird" chart and its repository information. Once you've done this, you can execute your Pulumi program using the CLI by running
pulumi up
, which will prompt you to confirm the deployment. After confirmation, Pulumi will provision the resources as defined in your program.Should you need more assistance, consult the official Pulumi documentation and the API documentation for the
kubernetes.helm.v3.Chart
resource.-