Installation
Install and configure a Foxglove Edge Site.
Prerequisites
- Kubernetes cluster
- Kubectl - Kubernetes command line tool
- Helm - Kubernetes package manager
Create a site and site token
You must be an organization admin to complete these steps.
Create an Edge Site from the Sites settings page:
- "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
Next, create a site token by clicking into that site's details, and clicking "Create new token".
You may also create a site token via the Foxglove API. On the API key settings page, create an API key with the appropriate siteToken
capabilities (list, create, etc), and use it to create a token via the site tokens API endpoint.
Note that every site must have its own unique site token.
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.
Create a foxglove
namespace in your cluster.
kubectl create namespace foxglove
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.
If storing recordings in an S3-compatible object store, you must set these config values:
recordingStorage.provider
: Should be set tos3_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.
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
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.
Example claim manifest:
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.
The index claim should be backed by block storage rather than network storage, for optimal performance.
Example claim manifest:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: edge-controller-index-claim
spec:
accessModes:
- ReadWriteOnce
storageClassName: "..."
volumeName: your-volume-name
resources:
requests:
storage: ...
Create secret with site token
Install a Secret named foxglove-site-token
into the foxglove
namespace containing your site token:
kubectl create secret generic foxglove-site-token --from-literal=FOXGLOVE_SITE_TOKEN='fox_st_...' --namespace foxglove
There are multiple other ways to create secrets that may be preferable. See Create a Secret for more info.
Additionally, your Edge Site will need cloud credentials to import data to the self-hosted Primary Site. See Configure cloud credentials for more details.
Install the release
Install your Foxglove Edge Site deployment to your current Kubernetes context using Helm.
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 Sites settings page.
You can configure your Edge Site to upload recordings to a Foxglove-hosted or self-hosted Primary Site. If using a Foxglove-hosted site, configure this in values.yaml
:
globals:
upload:
primarySiteMode: hosted
To upload to a self-managed Primary Site, configure provider
and bucketName
for your site. Accepted values for provider
are: aws
, azure
, or google_cloud
. bucketName
should be set to the inbox bucket for your Primary Site.
globals:
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
To add recordings to your site, see Manage Data.
Support
For additional support contact us at [email protected].