Use Cases
Use clusters to organize runners and workflow deployments into logical groups, which can help with:- Targeting specific runners for a particular job
- Reserving a group of runners for specific purposes, such as running certain types of batch jobs
- Setting up different clusters for different environments (like development and production)
- Deploying different workflow releases to development, staging, or production clusters
Cluster deployments
A workflow release deployment maps one workflow release to one cluster. Deploying a release does not submit a job. It only makes the release available to release runners on that cluster. A release runner can run multiple deployed releases for the same cluster. While it runs, it polls cluster deployment state and updates its task registrations when releases are deployed, updated, or removed.Adding runners to a cluster
You can add direct runners to a cluster by specifying the cluster’s slug when starting the runner from your SDK code. You can add release runners to a cluster withtilebox runner start --cluster <cluster-slug>.
Each runner must always be assigned to a cluster. If no cluster is specified, Tilebox uses the default cluster.
Default Cluster
Each team has a default cluster that is automatically created for them. This cluster is used when no cluster is specified when starting a runner, deploying a release, or submitting a job. This is useful when you are just getting started and don’t need to create any custom clusters yet.Managing Clusters
Before starting a runner or submitting a job to a custom cluster, create the cluster. You can also list, fetch, and delete clusters as needed. The following sections explain how to do this. To manage clusters, first instantiate a cluster client using theclusters method in the workflows client.
Creating a Cluster
To create a cluster, use thecreate method on the cluster client and provide a name for the cluster.
Cluster Slug
Each cluster has a unique identifier, combining the cluster’s name and an automatically generated identifier. Use this slug to reference the cluster for other operations, like submitting a job or subtasks.Listing Clusters
To list all available clusters, use theall method:
Fetching a Specific Cluster
To fetch a specific cluster, use thefind method and pass the cluster’s slug:
Deleting a Cluster
To delete a cluster, use thedelete method and pass the cluster’s slug:
Jobs Across Different Clusters
When submitting a job, you need to specify which cluster the job’s root task should be executed on. This allows you to direct the job to a specific set of runners. By default, all sub-tasks within a job are also submitted to the same cluster, but this can be overridden to submit sub-tasks to different clusters if needed. See the example below for a job that spans across multiple clusters.DummyTask registered.