High Availability
Deploy BindPlane OP Server to Kubernetes with High Availability
important
🚧 This feature is only available in BindPlane OP Enterprise. Learn more here.
Architecture
When BindPlane is deployed as a Deployment, it has the following architecture.
- BindPlane with multiple replicas
- Deployed as a Deployment.
- Prometheus time series database
- Deployed as a StatefulSet.
- Prometheus is deployed and managed by the chart using observIQ's Prometheus image.
- One or more Transform agent pods, for live preview
- PostgreSQL storage backend
note
BindPlane uses Prometheus as a storage backend for agent throughput metrics. It is unnecessary to manage Prometheus outside of the Helm chart.
note
PostgreSQL is not deployed by the BindPlane Helm chart and must be deployed as a prerequisites.
Prerequisites
Licensing
An Enterprise license is required when operating BindPlane in High Availability. Learn more here.
PostgreSQL
PostgreSQL must be deployed and reachable from the cluster.
Postgres requirements
- Database named
bindplane
- User with full permission to the
bindplane
database - Reachable from BindPlane's Kubernetes cluster
Event Bus
BindPlane requires an external event bus when operating with more than one pod. See the Event Bus documentation for details.
Installation
Add the BindPlane OP Helm chart to your workstation.
Create a values.yaml
file, which will be used to configure
your Helm deployment.
license
: Your Enterprise license. Add the initial options. Make sure to set the following:config.username
: Your basic auth username for the Administrator project.config.password
: Your basic auth password for the Administrator project.config.sessions_secret
: A random uuid. You can useuuidgen
to create one.config.eventbus.type
: The event bus type to use. This example will use Google Pub/Sub. See the Helm Event Bus Configuration doc for available options.backend.postgres.host
: The Hostname or IP address of the PostgreSQL server.backend.postgres.port
: The PostgreSQL server's port.backend.postgres.username
: The username the BindPlane server should use to connect to Postgres.backend.postgres.password
: The password the BindPlane server should use to connect to Postgres.
Deploy BindPlane to the bindplane
namespace using Helm and your previously
created values.yaml
configuration file.
After a few moments, check the namespace by running kubectl -n bindplane get pod
.
You will see three pods.
- BindPlane
- Prometheus
- Live Preview transform agent.