Single Instance

Deploy BindPlane OP Server to Kubernetes

Architecture

When BindPlane is deployed as a StatefulSet, it has the following architecture.

  • Single pod without horizontal autoscaling.
  • BBolt storage backend using a persistent volume claim.
  • Prometheus sidecar container using a persistent volume claim.
    • Prometheus stores agent throughput measurements.
  • Single transform agent pod, for live preview.

Prerequisites

System Requirements

  • Storage class which supports persistent volume claims (When running as a StatefulSet).

Installation

Add the BindPlane OP Helm chart to your workstation.

bash
1helm repo add "bindplane" \
2    "https://observiq.github.io/bindplane-op-helm"
3
4helm repo update

Create a values.yaml file, which will be used to configure your Helm deployment.

Add the initial options. Make sure to set the following:

  • config.username: Your basic auth username for the Administrator account.
  • config.password: Your basic auth password for the Administrator account.
  • config.secret_key: A random uuid. You can use uuidgen to create one.
  • config.sessions_secret: A random uuid. You can use uuidgen to create one.
yaml
1image:
2  name: ghcr.io/observiq/bindplane-ee
3  tag: 1.39.0
4
5config:
6  # These options should be configured by
7  # the user.
8  username: ''
9  password: ''
10  secret_key: ''
11  sessions_secret: ''
12
13prometheus:
14  enable: true
15  enableSideCar: true
16
17backend:
18  type: bbolt
19  bbolt:
20    volumeSize: '120Gi'
21
22resources:
23  # Request 2 cores and allow cpu bursting.
24  # Request fixed amount of memory, 8Gb.
25  requests:
26    cpu: '2000m'
27    memory: '8192Mi'
28  limits:
29    memory: '8192Mi'

note

Follow the the instance sizing guidelines when modifying the resource requests and limits.

Deploy BindPlane to the bindplane namespace using Helm and your previously created values.yaml configuration file.

bash
1helm repo update
2
3helm upgrade \
4    --values="values.yaml" \
5    --namespace=bindplane \
6    --create-namespace \
7    --install \
8    bindplane \
9    bindplane/bindplane

After a few moments, check the namespace by running kubectl -n bindplane get pod. You will see two pods. The BindPlane pod with the Prometheus sidecar, and the Live Preview transform agent.

text
1bindplane-0                                  2/2     Running   0          3m42s
2bindplane-transform-agent-6b99dbdc99-xdwwv   1/1     Running   0          3m42s

Frequently Asked Questions

Q: Why is the StatefulSet limited to one pod?

A: BindPlane is limited to a single instance when configured with local storage. See the BindPlane Deployment Installation documentation for details on how to deploy BindPlane OP using a scalable architecture.