Deploy the keda-operator helm chart on Digital Ocean Kubernetes Service
TypeScriptTo deploy the
keda-operator
Helm chart on a Digital Ocean Kubernetes Service (DOKS) using Pulumi, you will need to perform several steps:- Create a new Kubernetes cluster in Digital Ocean using the
digitalocean.KubernetesCluster
resource. - Use the
kubernetes.helm.v3.Chart
resource to deploy thekeda-operator
Helm chart onto the cluster.
Here is a step-by-step guide and a Pulumi TypeScript program that performs these steps:
Set up Pulumi to use the Digital Ocean and Kubernetes providers
First, you'll want to ensure that Pulumi is set up to interact with Digital Ocean and Kubernetes. You need to have the Pulumi CLI installed and the Digital Ocean provider configured with an access token. This token is typically set in the environment variable
DIGITALOCEAN_TOKEN
.Create a Digital Ocean Kubernetes Cluster
The
digitalocean.KubernetesCluster
resource is used to create and manage a Kubernetes cluster in Digital Ocean. You will need to specify the region, node pool details (such as the number of nodes, size, and name), Kubernetes version, and any other configurations you would like for your cluster.Deploy the
keda-operator
Helm ChartOnce the cluster is created, you will get the cluster's kubeconfig to interact with it using Kubernetes commands. Pulumi provides the
kubernetes.helm.v3.Chart
resource for deploying Helm charts, which you will use to deploykeda-operator
. Make sure to set thechart
name tokeda
and theversion
to specify which version of the chart you want to install.Pulumi TypeScript Program
import * as pulumi from "@pulumi/pulumi"; import * as digitalocean from "@pulumi/digitalocean"; import * as kubernetes from "@pulumi/kubernetes"; // Step 1: Create a new Digital Ocean Kubernetes cluster const cluster = new digitalocean.KubernetesCluster("keda-cluster", { region: "nyc1", // Specify the region for the cluster version: "latest", // Use the latest available version of Kubernetes nodePool: { size: "s-2vcpu-2gb", // Select the size for your Droplet nodes name: "keda-pool", // Name of the node pool nodeCount: 2, // Number of nodes in the node pool }, }); // Step 2: Deploy the keda-operator Helm chart to the Kubernetes cluster // Obtain the KubeConfig from the newly created Digital Ocean Kubernetes cluster const kubeConfig = cluster.kubeConfigs[0].rawConfig; // Initialize a new Kubernetes provider instance using the kubeConfig obtained from the cluster const k8sProvider = new kubernetes.Provider("k8s-provider", { kubeconfig: kubeConfig, }); // Use the kubernetes.helm.v3.Chart class to deploy the keda-operator helm chart const kedaChart = new kubernetes.helm.v3.Chart("keda", { chart: "keda", // Name of the Helm chart version: "2.4.0", // Specify version of the keda-operator Helm chart fetchOpts: { repo: "https://kedacore.github.io/charts", // Helm chart repository where keda-operator is hosted }, }, { provider: k8sProvider }); // Pass the Kubernetes provider associated with our Digital Ocean cluster // Export the cluster's name and kubeconfig export const clusterName = cluster.name; export const kubeConfigOutput = pulumi.secret(cluster.kubeConfigs[0].rawConfig);
Explanation
- The program initializes a new Digital Ocean Kubernetes cluster with a specified node size, name, and node count.
- A
kubeConfig
is retrieved from the Digital Ocean Kubernetes Cluster, which is necessary to communicate with the cluster. - A new instance of Kubernetes provider is created using the kubeConfig.
- The
keda-operator
Helm chart is deployed with a specific version and repository where the Helm chart is located. - The cluster's name and kubeconfig are exported as secrets for security purposes. The kubeconfig allows you to interact with the Kubernetes cluster using
kubectl
or other Kubernetes management tools.
To run this program:
- Save the code in a file with a
.ts
extension, for instance,deployKeda.ts
. - Run
pulumi up
in your terminal to execute the Pulumi program. This will provision the resources and output the name and kubeconfig of your new Digital Ocean Kubernetes cluster.
Please ensure that you have Pulumi and the required Pulumi packages installed, as well as the Digital Ocean access token set up in your environment.
- Create a new Kubernetes cluster in Digital Ocean using the