Deploy the helm-nginx helm chart on Opensshift
TypeScriptTo deploy the
helm-nginx
Helm chart on an OpenShift cluster using Pulumi, we'll need to write a program that sets up the necessary components. This involves the following steps:-
Setting up the Pulumi Kubernetes Provider: The provider is an interface to your Kubernetes cluster that handles the communication between Pulumi and the cluster's API.
-
Creating a Helm Release: A Helm Release represents an instance of a chart running in a Kubernetes cluster. The
helm-nginx
chart will define the Kubernetes resources that need to be deployed for nginx.
Before we write the program, ensure that you have:
- OpenShift CLI (
oc
) installed and configured to communicate with your OpenShift cluster. - Pulumi CLI installed and logged in. You can follow the Pulumi installation guide if needed.
- Node.js and npm installed, as we are using TypeScript for the Pulumi program.
We will be using the
kubernetes.helm.v3.Chart
class from the@pulumi/kubernetes
package to deploy the Helm chart. This class is a high-level component that deploys a given Helm chart to your Kubernetes cluster.Here is the Pulumi program written in TypeScript:
import * as pulumi from "@pulumi/pulumi"; import * as k8s from "@pulumi/kubernetes"; // Initialize the Pulumi program with the OpenShift Kubernetes provider. const clusterProvider = new k8s.Provider("openshift-provider", { // Assuming you have already configured the `oc` CLI to point to your OpenShift cluster, // Pulumi will use your current context from your kubeconfig. kubeconfig: pulumi.output({ value: process.env.KUBECONFIG }), }); // Define the helm-nginx Helm chart release using the `kubernetes.helm.v3.Chart` class. const nginxChart = new k8s.helm.v3.Chart("helm-nginx", { chart: "nginx", // Replace with the repository that contains your helm-nginx chart. // This is just an example, and you'll need to provide the correct repository URL. repo: "my-helm-charts-repository", // Optionally, you can specify the version of the chart you want to deploy. version: "1.2.3", // You can specify the namespace where the chart will be installed. If not specified, it uses the default namespace. namespace: "my-namespace", }, { provider: clusterProvider }); // Export the URL by which the nginx service can be accessed. // This is just an example to show how to export output values. // The actual output will depend on the specifics of the helm-nginx chart. export const nginxUrl = nginxChart.getResourceProperty("v1/Service", "helm-nginx-nginx-service", "status").apply(status => `http://${status.loadBalancer.ingress[0].hostname}`);
In this program:
- We create a Kubernetes provider (
clusterProvider
) for Pulumi that uses the kubeconfig from the environment variableKUBECONFIG
. This kubeconfig should be configured to point to your OpenShift cluster. - We instantiate the
Chart
class, which represents ourhelm-nginx
Helm release.- The
chart
field specifies the name of the chart to deploy. - The
repo
field should be replaced with the actual Helm chart repository URL wherehelm-nginx
is located. - The
version
field describes the version of the chart to deploy. It's optional, but you can use it to pin the chart to a specific version. - The
namespace
field specifies the Kubernetes namespace where the Helm release will be created. If it's omitted, the default namespace is used.
- The
- We pass our cluster provider (
clusterProvider
) when creating the Helm chart release, ensuring that Pulumi will manage resources in the right cluster. - Lastly, we include an export statement that attempts to extract the URL where the nginx service can be accessed. This is purely illustrative, as the exact details would depend on how the
helm-nginx
chart sets up the service.
For the export statement to be correct, you will need to adjust the
getResourceProperty
method to match resources and fields as defined by thehelm-nginx
chart. Check the chart's outputs/documentation for the correct service name and output fields.To run this program:
- Save the code to a file named
index.ts
. - Run
npm install @pulumi/pulumi @pulumi/kubernetes
to install the necessary Pulumi packages. - Run
pulumi up
to preview and deploy the changes to your cluster.
This program will deploy the
helm-nginx
chart to your OpenShift cluster. After running, Pulumi provides a preview of the changes and prompts you to confirm the deployment. Once accepted, Pulumi applies the changes and provides you with the output, which includes thenginxUrl
if applicable.-