Deploy the devlake helm chart on Opensshift
TypeScriptTo deploy the DevLake Helm chart on an OpenShift cluster using Pulumi, you first need to ensure that you have access to an OpenShift cluster and the necessary permissions to deploy Helm charts. Once you have that, you can proceed with writing a Pulumi program to handle the deployment.
Below is a detailed explanation and a Pulumi TypeScript program that demonstrates how you can deploy a Helm chart on OpenShift. We'll be using the
kubernetes.helm.v3.Chart
resource from the Pulumi Kubernetes provider which is designed to work with Helm charts.The
kubernetes.helm.v3.Chart
resource is a high-level abstraction that deploys a Helm chart from either a local path, a remote chart repository, or a Helm Chart archive. This resource is great for managing Helm-based applications in a declarative manner using Pulumi and TypeScript.Let's go through the Pulumi TypeScript program that deploys the DevLake Helm chart to OpenShift:
- We will begin with importing the required Pulumi Kubernetes package.
- Next, we'll create a new Helm chart resource using
new kubernetes.helm.v3.Chart
. - We will specify the chart details such as
chart
,version
,repo
, and any values we want to override in thevalues
argument.
Note: Make sure to replace
YOUR_NAMESPACE
with the actual namespace you wish to deploy to in your OpenShift cluster. In addition, provide the correct chart repository URL or name to therepo
parameter if the DevLake chart is published in a specific Helm repository. You might also need to adjust the chartversion
or override specificvalues
according to your deployment needs.import * as kubernetes from "@pulumi/kubernetes"; const devlakeHelmChart = new kubernetes.helm.v3.Chart("devlake", { namespace: "YOUR_NAMESPACE", repo: "YOUR_CHART_REPO", // Specify the repository URL or name where the DevLake Helm chart is located. chart: "devlake", // This should be the name of the chart in the repository. version: "CHART_VERSION", // Specify the version of the chart you wish to deploy. // Specify any custom values you want to override in the Helm chart. Replace this with actual values. values: { key1: "value1", key2: "value2", // More custom values as needed... }, }); // Export the base URL for the deployed DevLake application // This assumes the Helm chart exposes such a detail; you may need to adjust based on actual chart details. export const devlakeBaseUrl = devlakeHelmChart.getResourceProperty("v1/Service", "devlake-service", "status").apply(status => status.loadBalancer.ingress[0].hostname || status.loadBalancer.ingress[0].ip);
To run this program, make sure you have Pulumi installed and configured for use with your OpenShift cluster. You will need to have Node.js installed to execute this TypeScript program, and then perform the following steps:
- Initialize a new Pulumi project with
pulumi new kubernetes-typescript
. - Replace the contents of
index.ts
with the above code. - Run
npm install
to install the required dependencies. - Run
pulumi up
to preview and deploy the changes.
This program declares a new Helm chart resource, which Pulumi will translate into the necessary commands to pull and install the Helm chart onto your OpenShift cluster in the specified namespace with the given values. By default, if you do not provide custom values, Helm will use the values defined in the chart's
values.yaml
file.The
devlakeBaseUrl
exported at the end is a PulumiOutput
which represents a computed value (such as the public URL to access the deployed application), after the service is successfully deployed.getResourceProperty
is used to acquire runtime information about the Kubernetes resources created by the Helm chart – this code assumes there's a Service with an assigned external IP or hostname by your cluster's LoadBalancer.Remember to consult the documentation of your specific Helm chart for details on what values can and should be set (Pulumi Kubernetes provider documentation).