Deploy the openmct helm chart on Digital Ocean Kubernetes Service
TypeScriptTo deploy an application using a Helm chart on the Digital Ocean Kubernetes Service (DOKS), you'll follow several steps with Pulumi. These steps include setting up the Kubernetes cluster on Digital Ocean, installing the Helm chart for the specific application (in this case, openmct), and configuring any necessary resources such as node pools for the Kubernetes cluster.
Here's an overview of what you need to do:
-
Create a Digital Ocean Kubernetes Cluster: Using the
@pulumi/digitalocean
package, you'll define a Kubernetes cluster in your desired region with the required node pool specifications. -
Install the Helm Chart: With the Kubernetes cluster ready, you use the
@pulumi/kubernetes
package to deploy the Helm chart for openmct onto your Digital Ocean cluster.
Let's start by creating a new Digital Ocean Kubernetes (DOKS) cluster:
import * as digitalocean from "@pulumi/digitalocean"; import * as kubernetes from "@pulumi/kubernetes"; // Step 1: Create a Digital Ocean Kubernetes cluster const cluster = new digitalocean.KubernetesCluster("openmct-cluster", { region: "nyc1", version: "latest", // replace with your desired Kubernetes version nodePool: { name: "default-pool", size: "s-2vcpu-2gb", // replace with your desired Droplet size nodeCount: 2, // number of nodes in the node pool }, }); // Export the cluster's kubeconfig and name export const kubeconfig = cluster.kubeConfigs[0].rawConfig; export const clusterName = cluster.name;
Next, we need to set up a provider to manage resources in our Kubernetes cluster using the kubeconfig we just generated:
// Step 2: Setup a Kubernetes provider using the generated kubeconfig from our DOKS cluster const k8sProvider = new kubernetes.Provider("k8s-provider", { kubeconfig: kubeconfig, }); // Now, we can deploy the openmct helm chart into our cluster const openmctChart = new kubernetes.helm.v3.Chart("openmct", { chart: "openmct", version: "1.0.0", // replace with the specific chart version you need fetchOpts: { repo: "https://helm.openmct.org", }, }, { provider: k8sProvider }); // Export the status of our Helm deployment export const openmctStatus = openmctChart.status;
In the example above, we've written a Pulumi program that uses TypeScript to accomplish the tasks. The program begins by setting up a new Kubernetes cluster on Digital Ocean with a basic node pool. Next, we configure the Pulumi Kubernetes provider to be able to communicate with the newly created cluster using its
kubeconfig
. Finally, we deploy the openmct Helm chart to the cluster, which should set up openmct in the cluster.To run this code, save it to a
index.ts
file, and use the Pulumi CLI commandspulumi up
to create the infrastructure. The command also creates a stack for your Pulumi program if it's your first time running it. Make sure you have the prerequisites installed such as Pulumi CLI and the required cloud provider CLIs and access tokens configured.This will:
- Provision a new Kubernetes cluster in your Digital Ocean account
- Deploy the openmct application to the cluster using its Helm chart
Keep in mind:
- You need to have Pulumi installed and configured with Digital Ocean token.
- The Digital Ocean Kubernetes Service (DOKS) cluster might incur costs in your Digital Ocean account.
- The code snippet assumes you want the
latest
version of Kubernetes and a default node pool withs-2vcpu-2gb
Droplet sizes. You might want to adjust these settings based on your workload requirements and budget. - The OpenMCT Helm chart is fetched from its Helm repository, which you need to specify in the
fetchOpts
. Ensure that thechart
andversion
are specified according to the latest available from the OpenMCT Helm repository.
-