Deploy the livekit-recorder helm chart on Kubernetes
TypeScriptIn this task, you will be deploying a Helm chart for
livekit-recorder
on a Kubernetes cluster using Pulumi's infrastructure as code framework. Pulumi allows you to define infrastructure using familiar programming languages, and in this case, we'll be using TypeScript.The
livekit-recorder
Helm chart is a predefined package that helps you deploy and manage the LiveKit Recorder on Kubernetes with minimal configuration. Helm charts simplify the deployment and management of applications on Kubernetes.Our Pulumi program will utilize the
Chart
resource from the@pulumi/kubernetes
package. TheChart
resource enables us to deploy a Helm chart from a repository or a local path. We need to specify the chart name, the repository where the chart is located, and any custom values we would like to apply.Below you'll find a TypeScript program that defines the deployment of the
livekit-recorder
Helm chart:import * as k8s from "@pulumi/kubernetes"; // Define a new Helm Chart. const livekitRecorderChart = new k8s.helm.v3.Chart("livekit-recorder", { // Specify the chart repository and name. repo: "livekit", chart: "livekit-recorder", // Optionally, you can specify the version of the chart. // version: "x.y.z", // Pass any custom values to the chart. values: { // ... insert your custom values here }, // Specify the namespace where the chart should be installed. // If not set, it defaults to the 'default' namespace. namespace: "recording-namespace", // Set to a higher value to log the results of the template rendering to the pulumi logs. // Default is 0. transformManifest: (manifest: any) => { // You can manipulate the manifest if necessary before it is applied to the Kubernetes cluster. return manifest; }, }); // Export the base URL for the livekit-recorder service once it is deployed export const livekitRecorderServiceEndpoint = livekitRecorderChart.getResourceProperty( "v1/Service", "livekit-recorder-service", "status" ).apply(status => status.loadBalancer.ingress[0].hostname);
Let's break down the key parts of this program:
- We import the
@pulumi/kubernetes
package, which is required to interact with Kubernetes resources using Pulumi. - We create a new instance of a
Chart
resource namedlivekit-recorder
. This resource is what tells Pulumi that we want to deploy a Helm chart. - We specify the repository using the
repo
key. This is the Helm repository where our chart is located. - The
chart
key is the name of the Helm chart we want to deploy. - The
version
key is optional and can be used to pin to a specific version of the chart. - The
values
key allows you to provide a set of custom values to configure the Helm chart. These values override the defaults provided by the Helm chart. - The
namespace
key specifies the Kubernetes namespace where the chart should be installed. - The
transformManifest
function is a hook that allows for directly manipulating the generated Kubernetes manifests before they are applied to the cluster.
Lastly, we export the endpoint of the
livekit-recorder
service. Access to this service enables interaction with the recorder component once it's up and running.To run this program:
- Ensure you have Pulumi installed and configured with access to a Kubernetes cluster.
- Save the above code to a file named
index.ts
. - To initialize a Pulumi project, run
pulumi new typescript
in the same directory as yourindex.ts
. - Run
npm install
to fetch the necessary node modules. - Finally, deploy your stack with
pulumi up
.
Pulumi will perform the actions described in your code and output the base URL for the
livekit-recorder
service.- We import the