Orchestrator in a Box

Bluebricks Orchestrator in a Box (OIB) provides a streamlined solution for deploying the Bluebricks Self-Hosted Runner on a single VM using a lightweight Kubernetes environment.

Overview

The Orchestrator in a Box solution creates a lightweight Kubernetes environment using K3sarrow-up-right, which runs inside Docker containers using k3d, and then deploys the Bluebricks Deployments Controller. This makes it ideal for:

  • Environments with limited Kubernetes expertise

  • Simpler deployments with minimal infrastructure requirements

  • Quick setup for testing or evaluation purposes

  • Resource-constrained environments

Orchestrator in a Box Infrastrcture

System Requirements

  • Operating System: Ubuntu Linux (20.04+ recommended)

  • Resources:

    • 4 GB RAM minimum (8GB+ recommended)

    • 20 GB storage minimum

    • 2 CPUs minimum

  • Software Requirements:

    • Docker Engine

    • curl

  • Network Requirements:

    • Complies with Bluebricks Network Access Requirements

      • If using a proxy, ensure environment variables are set (HTTP_PROXY and HTTPS_PROXY)

Installation

Download and Prepare Installation Files

Execute the Installation Script

The installation script will:

  1. Check system prerequisites

  2. Install k3d (if not already installed)

  3. Create a single-node K3s cluster inside Docker

  4. Install the required Kubernetes components

  5. Deploy the Bluebricks Orchestrator using Helm

  6. Configure the Kubernetes environment

  7. Display access information

Configure the self-hosted Orchestrator

The configuration includes setting up the collection, generating a static authentication token, and establishing communication between the Bluebricks Control Plane and the Orchestrator in a Box.

Create a Collection

This collection will be used to manage the deployments handled by your self-hosted orchestrator. Follow the 'Create a Collection' article to connect the self-hosted Orchestrator you created.

circle-info

At this point, go to https://app.bluebricks.co/collectionsarrow-up-right and validate that the created collection is listed. If listed, proceed to generate your Static Auth Token.

Generate Static Auth Token

The Static Auth Token is a one-time activity that generates a unique token to be used by the Orchestreator in a Box. This token will be registered in Bluebricks Control Plane and ensure secure communication.

Fetch JWT from Bricks CLI

You're going to use Bluebricks API, which is protected by a JWT. We'll use the assigned JWT that was created when you logged in to bricks.

circle-info

If you haven't signed into bricks CLI already, please open your terminal and type bricks login. If you haven't installed the bricks CLI, please refer to this article.

Once signed in, fetch your JWT by typing the following command:

Call Bluebricks API

Open a terminal and execute the following API request using curl to generate the Static Auth Token

Be sure to replace the placeholders with your data as described below:

Placeholder
Replace with
Note

<YOUR_BEARER_TOKEN>

JWT that was fetched in the previous step.

<DISPLAY_NAME>

A friendly name that will be used later to identify your OIB

<UNIQUE_NAME>

A lowercase with no spaces name to identify your OIB in scripts and API calls

<COLLECTION_SLUG>

The slug of the created collection from the previouse steps

Collection slug is listed on Bluebricks Control Plane on Collections Pagearrow-up-right

The response shall include a static_auth_token value, which you'll use to authenticate your orchestrator:

Assign Identity to the OIB

Use the following install.sh script to add the generated Static Auth Token

Verifying Installation

After installation completes, you can verify the orchestrator is running by checking the Kubernetes pods:

You should see pods running the Bluebricks orchestrator components.

  • Check the logs using the following command:

You can also use the Kubernetes dashboard if it was enabled during installation:

Then access the dashboard at: http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/arrow-up-right

Using kubectl with the K3s Cluster

Interact with your K3s cluster using the following commands:

Customization

Using a Custom Configuration

You can customize the K3s cluster and orchestrator deployment by editing the config.yaml file before installation, or by providing a custom configuration file:

Advanced Options

Uninstallation

To completely remove the orchestrator and K3s cluster, execute the following command.

Uninstallation script will do the following:

  1. Uninstall the orchestrator Helm release

  2. Delete the K3s cluster

  3. Remove the kubeconfig file

  4. Clean up any temporary files

Troubleshooting

chevron-rightConnectivity Problemshashtag

If the orchestrator cannot connect to the Bluebricks API, verify your network settings and ensure the required domains are whitelisted.

chevron-rightAuthentication Failureshashtag

Double-check that you're using the correct Static Auth Token.

chevron-rightResource Constraintshashtag

If the K3s cluster or orchestrator pods are terminating unexpectedly, check system resources to ensure the VM has adequate memory and CPU available.

chevron-rightDocker is not Runninghashtag

Ensure Docker is running before starting the installation by running docker info

chevron-rightPort Conflictshashtag

If ports 6443 (Kubernetes API) or 8080 are already in use, you might need to modify the configuration.

chevron-rightKubernetes Errorshashtag

If you encounter Kubernetes-related errors:

Support

For issues related to Orchestrator in a Box, please get in touch with the Bluebricks support team.

Last updated

Was this helpful?