Deploy the sample-app helm chart on Kubernetes
TypeScriptTo deploy a Helm chart on Kubernetes using Pulumi, you'll need to have access to a Kubernetes cluster and have the Helm CLI installed on your machine. Pulumi's
kubernetes
package can be used to create resources on a Kubernetes cluster, and within this package, theChart
resource represents a Helm chart.In the Pulumi TypeScript program below, I will be using the
kubernetes.helm.v3.Chart
class to deploy a Helm chart namedsample-app
. You need to replaceYOUR_KUBERNETES_CLUSTER_NAME
with the actual name of your Kubernetes cluster and ensure that you've configured Pulumi to use the appropriate Kubernetes context.Here's a detailed breakdown of the steps in the program:
- Import dependencies: We import the required Pulumi and Kubernetes packages.
- Create a Helm Chart: We instantiate a Helm chart with the
new Chart
construct. This will translate into thehelm install
command being run on your cluster. - Helm Chart Configuration:
chart
: The name of the chart. In this case, we named itsample-app
.version
: The version number of the chart you want to deploy. If unspecified, the latest version will be deployed.fetchOpts
: Additional options that specify the Helm repository where the chart is stored, including details such as the repository name.
- Stack Output: We export the URL of the deployed application assuming your chart includes a
Service
resource that specifies a load balancer.
Before running the code, ensure you have configured Pulumi access to your Kubernetes cluster using
pulumi config set kubernetes:context <context-name>
(replace<context-name>
with your actual context).Now, here is the TypeScript program:
import * as pulumi from "@pulumi/pulumi"; import * as kubernetes from "@pulumi/kubernetes"; // Create an instance of the Helm Chart "sample-app" const sampleAppChart = new kubernetes.helm.v3.Chart("sample-app", { // Specify the chart name. Ensure "sample-app" exists in your Helm repository. chart: "sample-app", // Specify a version if required; otherwise, the latest will be installed. // version: "1.2.3", // Uncomment and specify the chart version if needed. fetchOpts: { // Specify the repository options where your Helm chart is hosted. repo: "http://charts.example.com/", }, // Include values to overwrite default chart values // values: { /* your values here */ }, // Uncomment and set any value overrides if required. }); // If your application includes a Service with type LoadBalancer // and you want to export the endpoint, you can uncomment this section. /* const frontEndService = sampleAppChart.getResource("v1/Service", "sample-app"); export const frontEndIp = frontEndService.status.loadBalancer.ingress[0].ip; */ // Export the base name of the chart and the namespace it's deployed into. export const chartName = sampleAppChart.metadata.name; export const chartNamespace = sampleAppChart.metadata.namespace;
This program will deploy the
sample-app
chart to your Kubernetes cluster. If you need to customize the deployment, for example by setting values or selecting a namespace, you can add additional properties to theChartArgs
object passed to theChart
constructor.After saving the above code to a file (e.g.,
index.ts
), you would runpulumi up
to deploy your chart. When you do this, Pulumi will calculate the desired state and present you with a preview of the Kubernetes resources that will be created. You can then confirm the deployment by selecting 'yes' in the prompt. Remember that Pulumi uses your current Kubernetes context (set in~/.kube/config
) to operate on the cluster, so ensure the context is set to the cluster you wish to interact with.Refer to the official Pulumi Kubernetes documentation for more details on using Pulumi with Kubernetes.