Service

When building a lab with many DUTs, it quickly becomes difficult to keep track of devices, schedule access for automated tests, and perform routine maintenance such as batch updates.

Jumpstarter provides a service that can be installed in any Kubernetes cluster to manage connected clients and exporters.

If you’re already using a Kubernetes-native CI tool such as Tekton, Jenkins X, Konflux, or GitLab CI, Jumpstarter can integrate directly into your existing cloud or on-premises cluster.

Controller

The core of the service is the controller, which manages access to devices, authenticates clients/exporters, and maintains a set of label selectors to easily identify specific devices.

The Controller is implemented as a Kubernetes controller using CRDs to store information about clients, exporters, leases, and other resources. See the CRDs reference for the full field definitions.

Leases

When a client requests access to an exporter and a matching instance is found, a lease is created. The lease ensures that each lessee (client) has exclusive access to a specific device/exporter.

Clients can be scheduled to access a specific exporter or any exporter that matches a set of requested labels, similar to node selection in Kubernetes. This enables flexible CI-driven testing even when physical resources are limited.

Router

The router routes traffic between clients and exporters through a gRPC tunnel. This allows clients to reach exporters without public IP addresses or behind NATs/firewalls. Clients on the same network can also connect directly to an exporter, bypassing the router.

Once a lease is established, all traffic flows through a router instance. While there may only be one controller, the router can be scaled with multiple instances to handle many clients and exporters simultaneously.

All communication between clients and drivers uses gRPC with three RPC styles (unary, server streaming, and bidirectional streaming). See Driver Communication for details.