Skip to main content
The Control Plane ships as a Helm chart. This page covers the quick start, then every value worth setting.

Quick start

Use this to evaluate the Control Plane — proofs of concept and test environments.
This installation serves plaintext. Deploy it on a trusted network and keep production resources out of it until you have TLS configured.
1

Deploy it

2

Access it

  1. Forward the service port to your machine:
  1. Open the web app at http://127.0.0.1:8009/login
postgres.enabled=true provisions a Postgres with host-mounted storage. If the node is decommissioned, the data goes with it.For anything durable, pass a storage class so it uses a Persistent Volume instead:
  • --set postgres.storageClassName=<your-storage-class>

Helm install

To install the latest version into a namespace:

Overriding values

You can add or override attributes from a base values.yaml on the command line. Here, pinning a specific version:

Database configuration

The Control Plane stores its state in Postgres, using the private schema for its own tables. This creates the database and a user with the privileges it needs:
If the password contains special characters, URL-encode it in the connection string.
Assemble POSTGRES_DB_URI from those values:
  • POSTGRES_DB_URI=postgres://hoopuser:<passwd>@<db-host>:5432/hoopdb
Append ?sslmode=disable if your database does not support TLS.

Chart configuration

Everything under config maps to an environment variable — see Environment Variables for the full list.

Authentication

Authentication is local by default. The Control Plane manages users and passwords itself and signs its own JWT access tokens, so the minimum configuration is a database and a public address:

TLS

Set TLS_KEY and TLS_CERT to terminate TLS on the Control Plane.
The certificate file may carry the root and intermediate CAs as well. Order matters:
Encode the files like this, and use each output as the value above:

Bundled database

The chart can deploy Postgres as part of the installation.
This creates a Service named hoopgateway-pg. Use that name as the host in POSTGRES_DB_URI.

Persistence

Use SSD for large deployments — it speeds up I/O under concurrent load. This enables a 50GB persistent volume on AWS/EKS:

Ingress

The Control Plane serves HTTP/8009. That is the port the web app uses and the port Sidecars reach.
The AWS Load Balancer Controller manages Elastic Load Balancers for a Kubernetes cluster.
2

Configure the ingress

Exposing it through a load balancer

If you prefer a Service over an Ingress, proxyService provisions one:
This setup requires TLS configured directly on the Control Plane.

Computing resources

The chart defaults to 1 vCPU and 1GB, which is enough to evaluate and nothing more. For production, allocate at least 4 vCPU and 8GB.

Image

The latest version of every image is used by default. Pin it with the image section:

Node selector

Schedules the pod onto nodes carrying a disktype=ssd label. See the Kubernetes documentation.

Tolerations

See taints and tolerations.

Node affinity

See affinity and anti-affinity.

Generating manifests

If you would rather apply manifests than run Helm, render them. This lets you diff a new chart version against your versioned files and see exactly what changed.

Next

Connect a Sidecar

Issue a token, point a Sidecar at the server host, and confirm it picked up its configuration.