Deploy the watcher helm chart on Linode Kubernetes Engine
TypeScriptTo deploy a Helm chart on a Kubernetes cluster you would typically follow these high-level steps:
- Set up a Kubernetes cluster or use an existing one.
- Install Helm on your local machine or where you execute your deployments.
- Add the Helm chart repository containing the chart you wish to install.
- Use Helm to install the chart onto your Kubernetes cluster.
With Pulumi, these steps can be automated and defined in code using TypeScript and the Pulumi Kubernetes provider. First, let's go through how to write a program that deploys a Helm chart to a Linode Kubernetes Engine (LKE) cluster.
Prerequisites
Before running the Pulumi program, make sure you have:
- A Linode account setup with LKE configured.
- Installed Pulumi CLI and set up the Pulumi project.
- Configured Kubernetes CLI (
kubectl
) with access to your Linode Kubernetes cluster. - Helm installed locally (only required if you want to manage Helm charts outside of Pulumi).
Program Explanation and Code
Now we will create a Pulumi program that accomplishes the deployment of a Helm chart named "watcher" onto the Linode Kubernetes Engine. We'll use the
@pulumi/kubernetes
package which allows us to manage Kubernetes resources including deploying Helm charts:- Define the Kubernetes Provider: This sets up the connection to your LKE cluster.
- Install the Helm Chart: Using Pulumi's Helm support, you can deploy charts directly.
Here's the TypeScript program to achieve this:
import * as k8s from "@pulumi/kubernetes"; // 1. Kubernetes provider to connect to the LKE cluster // Make sure the KUBECONFIG environment variable is set correctly. const provider = new k8s.Provider("linode", { kubeconfig: process.env.KUBECONFIG, }); // 2. Define the Helm chart deployment const watcherChart = new k8s.helm.v3.Chart("watcher-chart", { chart: "watcher", // Replace '<REPO_NAME>' with the name of the repository containing the 'watcher' chart // Replace '<REPO_URL>' with the URL of the Helm repository fetchOpts: { repo: "<REPO_URL>", }, // Specify the namespace where the chart will be installed, or leave it out to use default namespace namespace: "default", // Add any custom values you need to configure the chart values: { // ...insert values here }, }, { provider }); // Optional: Exporting a detail from the chart if needed, e.g., a deployed service's frontend IP. export const frontendIp = watcherChart.getResourceProperty( "v1/Service", "watcher-frontend", "status" ).apply(status => status.loadBalancer.ingress[0].ip);
Replace
<REPO_NAME>
and<REPO_URL>
with the appropriate values for the Helm repository that contains the "watcher" chart. Also, customize thevalues
object to match the configuration you wish to apply to the chart.After you have put this code into a
index.ts
file in your Pulumi project, you can run the deployment using the following commands:pulumi up
This command will start the Pulumi deployment process. It will show you a preview of the resources that will be created. If everything looks correct, proceed with the deployment.
Next Steps
- To find more details about the Kubernetes resources managed by Pulumi, you can visit the
@pulumi/kubernetes
package documentation. - To understand more about deploying Helm charts with Pulumi, check out the Pulumi Helm Chart documentation.
After the deployment is complete, you can verify the installation using
kubectl
:kubectl get all -n default
This command lists all the Kubernetes resources in the
default
namespace, and you should see the resources created by the "watcher" Helm chart there.