Deploy the cluster-gitlab-runner helm chart on Digital Ocean Kubernetes Service
TypeScriptTo achieve the goal of deploying the
cluster-gitlab-runner
Helm chart on Digital Ocean Kubernetes Service (DOKS), we'll go through several steps. I'll break down the process and the code into understandable sections so you can easily follow along and learn how to use Pulumi for this task.First, we need to create a Digital Ocean Kubernetes Cluster. Then, once our cluster is up and running, we will deploy the
cluster-gitlab-runner
Helm chart onto that cluster.Step 1: Creating a Digital Ocean Kubernetes Cluster
To create a Kubernetes cluster on Digital Ocean, we use the
digitalocean.KubernetesCluster
resource provided by the Digital Ocean Pulumi provider. You'd need to specify the region, version, and node pool configuration at a minimum.Step 2: Deploying the Helm Chart
Once we have a Kubernetes cluster, we can use the
kubernetes.helm.v3.Chart
resource to deploy our Helm chart. We'll specify the chart namecluster-gitlab-runner
, and then we can provide any necessary configuration values for our GitLab runner through thevalues
property.Below is a TypeScript program that creates a Digital Ocean Kubernetes cluster and deploys the GitLab runner Helm chart onto it:
import * as digitalocean from "@pulumi/digitalocean"; import * as kubernetes from "@pulumi/kubernetes"; // Create a Digital Ocean Kubernetes cluster const cluster = new digitalocean.KubernetesCluster("gitlab-runner-cluster", { // Specify the region for your cluster region: "nyc1", // Specify the desired version for your cluster version: "latest", // Define the node pool for your cluster nodePool: { name: "worker-pool", size: "s-2vcpu-2gb", // This size is flexible depending on your needs nodeCount: 2, } }); // Once the cluster is provisioned, we can configure a Kubernetes provider that uses the kubeconfig from the newly created cluster const k8sProvider = new kubernetes.Provider("k8s-provider", { kubeconfig: cluster.kubeConfigs[0].rawConfig, }); // Deploy the cluster-gitlab-runner Helm chart on the Digital Ocean Kubernetes cluster using the newly configured provider const gitlabRunnerChart = new kubernetes.helm.v3.Chart("gitlab-runner", { chart: "gitlab-runner", // You can specify a specific version of the Helm chart here, if necessary // version: "0.20.2", // Add any custom values for the GitLab runner Helm chart here values: { runners: { // You'll need to add your personal configuration here // This often includes runner registration tokens and other specifics related to your GitLab instance }, }, }, { provider: k8sProvider }); // Export the cluster endpoint and the kubeconfig export const kubeconfig = cluster.kubeConfigs[0].rawConfig; export const clusterEndpoint = cluster.endpoint;
Here's a breakdown of what we're doing in this code:
-
We create a new Digital Ocean Kubernetes cluster by specifying the region, version, and node pool configuration. The node pool determines the size and number of nodes (virtual machines) that will form the Kubernetes cluster.
-
Once the cluster is ready, we initialize a
kubernetes.Provider
with the kubeconfig from the created cluster. This provider will allow us to communicate with our Kubernetes cluster using Pulumi. -
Using this provider, we then create a new Helm chart resource for the
cluster-gitlab-runner
. We specify the chart and any additional values it needs. Generally, you'll want to configure the runner according to your specific requirements, such as setting up the registration tokens, executor type, and more. -
Finally, we're exporting the kubeconfig and cluster endpoint as Pulumi stack outputs, which you can use to interact with your cluster after the program has finished running.
Important Notes
- Ensure that you've configured Pulumi with the required Digital Ocean access token.
- You can customize the
values
property in thegitlabRunnerChart
resource to match the configuration that you need for your specific GitLab runner setup.
This Pulumi program can be saved in a file, for example
index.ts
, and you would runpulumi up
to create the resources in your Digital Ocean account. Thepulumi up
command initiates the provisioning of the specified resources and the deployment of the Helm chart.-