Skip to content

Spinning up cost effective clusters for training sessions

We have been running a number of internal and external (with partners/customers) enablement sessions over the last few weeks to provide "hands-on, labs based training" on some recently introduced capabilities in the Rafay Kubernetes Operations Platform.

Here's what we setup for those enablement sessions:

  • Each attendee was provided with their own Kubernetes cluster
  • We spun up ~25 "ephemeral" Kubernetes clusters on Digital Ocean (for life of the session)
  • We needed the clusters to be provisioned in just a few minutes for the training exercise
  • Each attendee had their own dedicated "Project" in the Rafay Org

A question that we frequently got asked after those enablement sessions was "I would love to run similar sessions with my extended team, how much did it cost to run those clusters?".

Our total spend for ~25 ephemeral clusters on Digital Ocean for these enablement sessions was less than $15. It was no wonder there has been so much interest in this.

We decided that it would help everyone if we shared the automation scripts and the methodology we have been using to provision Digital Ocean clusters and to import them to Rafay's platform here.

Digital Ocean

Install Digital Ocean's CLI

Install and configure (doctl) by following the instructions outlined here.

Install Rafay CLI

Install and configure the Rafay Platform's CLI (RCTL) by following the instructions outlined here.

Provision Clusters

  • Create a cluster_list file and add entries for each cluster that needs to be created (e.g. john-test, dave-test)
  • Use the sample script below
# Create clusters through DO CTL
while read -r line
    doctl kubernetes cluster create $line --node-pool "name=$line;size=s-4vcpu-8gb;count=1"
    echo "$line"
done < cluster_list.txt

# Create folders to copy cluster spec and bootstrap files
mkdir clusterspec
mkdir clusterbootstrap

# Creating cluster spec files
while read -r line
    echo "kind: Cluster\nmetadata:\n  name: $line\n  project: $line\nspec:\n  type: imported\n  blueprint: minimal\n  location: newyorkcity-us" >> clusterspec/clusterspec_$line.yaml
done < cluster_list.txt

# Reference your RCTL config here
./rctl config init <config file>

# Create a project and add the DO clusters as an imported cluster within that project
while read -r line
    # Create a Project in the Org for the User 
    ./rctl create project $line
    # Set context to the newly created project 
    ./rctl config set project $line
    ./rctl create cluster -f clusterspec/clusterspec_$line.yaml
    ./rctl get clusterbootstrap $line -o yaml > clusterbootstrap/$line-bootstrap.yaml
    kubectl config use-context do-nyc1-$line
    kubectl apply -f clusterbootstrap/$line-bootstrap.yaml
done < cluster_list.txt

In the first step, the script creates clusters in Digital Ocean's NYC1 region with a node each of the type s-4vcpu-8gb under the default Digital Ocean project. You can change these parameters as required.

Cluster create

In the next step, the script creates two folders, clusterspec and clusterbootstrap. The cluster spec and bootstrap files that are required to import these clusters to Rafay's Kubernetes Operations Platform will be copied to these folders

Spec files

A project is then created (with the same names as the cluster, you can change this if needed) and the corresponding cluster is imported to this project (with a minimal cluster blueprint).


Here's an example of what an imported Kubernetes cluster on Digital Ocean looks like in the Rafay Platform.

Spec files

Clean Up

Once the session is complete, we deleted all the clusters using a single command using the following script.

# Delete the cluster using DO CTL
while read -r line
    kubectl config use-context do-nyc1-$line
    yes | doctl kubernetes cluster delete $line
    echo "$line"
done < cluster_list.txt


Learn More?

Sign up here for a free trial and try it out yourself.

Get Started includes a number of hands-on exercises that will help you get familiar with capabilities of Rafay's Kubernetes Operations Platform.

Blog Ideas

Sincere thanks to those who spend time reading our product blogs and provide us with feedback and ideas. Please Contact the Rafay Product Team if you would like us to write about specific topics.