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.
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.
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.