Running multiple k8s runners and having pipeline select which to use?

Hi guys! got a question.

I’m running drone on k8s and I’m thinking of running multiple k8s runners, with each runner having different configurations (for example, k8s runner A will have its secrets extension endpoint pointing to service A and k8s runner B will point to service B).

I’ve been digging through the documentation and I’m trying to find out if its possible for the pipeline syntax to select which runner (of the same type Kubernetes) should run the pipeline.

is this use case supported/possible?

yes, just a warning that this is an undocumented feature and the syntax will likely change in the future, but you can configure a runner to include labels:

DRONE_RUNNER_LABELS=cluster:foo

then you can route the pipeline to the particular runner by matching the labels exactly. Note that a pipeline cannot get routed to a runner unless it matches all labels exactly, and a runner will not process a pipeline unless it matches all labels exactly.

node:
  cluster: foo

in the future we will probably change the syntax [1] to look something like this:

placement:
  cluster: foo

[1] https://trello.com/c/bp4k78CD/60-alternate-node-syntax-kubernetes-cluster-support

2 Likes