Foxglove

Installation

Install and configure your on-premises Edge Site.

Prerequisites

Create a site

To create an Edge Site, navigate to the Foxglove web console's Settings:

  • "Create site" – Name and create your Edge Site
  • "Automatically delete recordings after (days)" – Enable garbage collection for your Edge Site; files past the expiration period are no longer eligible for import

You're now ready to set up your cluster.

Configure cluster resources

Configure cluster resources required by the deployment – these are specific to your cluster and site setup.

Recording Storage

Your deployment needs access to storage containing your edge recordings. You can use a Kubernetes Persistent Volume or any S3-compatible object storage to store your recordings.

Using S3-Compatible Object Storage

If storing recordings in an S3-compatible object store, you will need to set these config values:

  • recordingStorage.provider: Should be set to s3_compatible.
  • recordingStorage.bucketName: The bucket name where recordings will be stored.
  • recordingStorage.s3CompatibleServiceUrl: The URL of your S3-compatible service.
  • recordingStorage.s3CompatibleServiceRegion: The region of your service. If your service is not configured with a region, leave this unconfigured.

You will also need to configure credentials for your Edge Site to access these recordings.

Install a Secret named recording-storage-credentials into the foxglove namespace. This secret should contain an HMAC ID/secret pair to access your S3-compatible object store.

Check out the following example secret configuration file:

apiVersion: v1
kind: Secret
metadata:
  name: recording-storage-credentials
type: Opaque
stringData:
  RECORDING_STORAGE_S3_COMPATIBLE_ACCESS_KEY_ID: AKIAIOSFODNN7EXAMPLE
  RECORDING_STORAGE_S3_COMPATIBLE_SECRET_ACCESS_KEY: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

Using a Persistent Volume

If storing recordings in a Persistent Volume, the recordingStorage.provider config value should be left unset. You will need a pre-configured Persistent Volume Claim. The default claim name is edge-controller-storage-claim however you can override this with the edge_controller.storageClaim config value.

An example claim manifest is presented below – adjust this claim to reference volumes from your cluster:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: edge-controller-storage-claim
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: "..."
  volumeName: your-volume-name
  resources:
    requests:
      storage: ...

Index Storage

You will need a pre-configured Persistent Volume Claim for storing database data. The default claim name is edge-controller-index-claim however you can override this with the edge_controller.indexClaim config value.

Note the index claim should be backed by block storage rather than network storage for optimal performance.

An example claim manifest is presented below – adjust thi claim to reference volumes from your cluster:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: edge-controller-index-claim
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: "..."
  volumeName: your-volume-name
  resources:
    requests:
      storage: ...

Secrets

Your Edge Site will need cloud credentials to import data to the self-managed Primary Site. See Configure cloud credentials for more details.

Install the release

Use Helm to install the Edge Site deployment to your current Kubernetes context.

Prepare a values file

Create a values.yaml file to configure the installation. You'll need your Edge Site's site token, which can be found on the Foxglove web console's Settings page, and the name of your inbox bucket.

Accepted values for provider are: aws, azure, or google_cloud.

globals:
  siteToken: fox_sk_...

  upload:
    provider: azure
    bucketName: foxglove-inbox

Install

$ helm repo add foxglove https://helm-charts.foxglove.dev
$ helm repo update
$ helm upgrade --install foxglove-edge-site foxglove/edge-site \
    --values ./values.yaml  \
    --namespace foxglove \
    --create-namespace

To view info about the deployment, run $ helm list -n foxglove.

To test that the service is up, forward the service port to your machine with $ kubectl port-forward -n foxglove service/edge-controller 8888:8888 and open http://localhost:8888/v1/liveness.

Create an Ingress

The edge controller exposes a REST API service (edge-controller) for notifications of new recordings. To access this API outside of your cluster, you must create an Ingress.

The Edge Site service name is edge-controller and is available on TCP port 8888.

Visit http://<cluster ip>:<port>/v1/liveness in a web browser to confirm connectivity to the edge controller service via the Ingress.

Next steps

Congratulations! 🦊 Your Edge Site is setup and ready for use.

For next steps on adding recordings to your site, see Manage Data.