Jumpstarter Service

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

Jumpstarter provides a Cloud Native 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, or GitLab CI, Jumpstarter can integrate directly into your existing cloud or on-prem cluster.

block-beta client["Client"] space block:service columns 1 controller router end space exporter["Exporter"] exporter-->service client-->service

Controller

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

The Controller is implemented as a Kubernetes controller using Custom Resource Definitions (CRDs) to store information about clients, exporters, leases, etc.

Leases

When a client requests access to an exporter and a matching instance is found, a lease is created. The lease ensures that each lesee (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 enable flexible CI-driven testing even when physical resources are limited.

Sessions

Within a lease, a session is be created to interact with the hardware. The lifecycle of a session typically follows that of a test suite, with some setup logic, a set of tests, and teardown logic to reset the hardware to a known state.

Multiple sessions may be created within one lease, however only one session can exist at one time.

Router

The router service is used by the controller to route messages between clients and exporters through a gRPC tunnel. This enables remote access to exported interfaces via a the client.

Once a lease is established, all traffic between the client and the exporter flows through a router instance. While there may only be one controller, the router can be scaled to handle traffic from many clients/exporters simultaneously.