⚠️ Beta: The Bindplane Operator is currently in beta and is not recommended for production use. If you are interested in using the operator, please reach out to your Bindplane contact or Bindplane support.
Before following this guide, ensure you have the following:
- A running Kubernetes cluster with
kubectlconfigured to access it - A Bindplane license key
- Sufficient cluster permissions to install CRDs and deploy workloads
- cert-manager installed in your cluster (required for the default install, which includes the validating admission webhook — see Validating Admission Webhook to deploy without it)
- Postgres database reachable from the cluster
kubectl apply \
--server-side \
-f https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yamlBindplane requires Postgres for persisting resources such as configurations. Provisioning, operating, and maintaining Postgres is the responsibility of the user.
For production environments, a managed cloud database service is strongly recommended, such as Google Cloud SQL, Amazon RDS, or Azure Database for PostgreSQL. These services handle backups, high availability, and maintenance automatically.
The following is a basic example using Cloud Native Postgres for non-production or local cluster deployments only. It uses a superuser account for simplicity. For a least-privileged user setup, see the Postgres Configuration guide.
Install Cloudnative PG operator:
kubectl apply \
--server-side \
-f https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/release-1.27/releases/cnpg-1.27.1.yamlCreate Postgres user secret:
kubectl create secret generic bindplane-postgres-superuser \
--from-literal=username=bindplane \
--from-literal=password=bindplanepass \
--dry-run=client -o yaml | kubectl apply -f -Deploy a basic Postgres server:
cat <<EOF | kubectl apply -f -
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: bindplane-postgres
spec:
instances: 1
storage:
size: 10Gi
bootstrap:
initdb:
database: bindplane
owner: bindplane
secret:
name: bindplane-postgres-superuser
EOFWait for Postgres to be ready:
kubectl wait --for=condition=Ready --timeout=600s cluster/bindplane-postgresInstall the operator and CRDs:
kubectl apply \
--server-side \
-f https://github.com/observiq/bindplane-operator/releases/latest/download/install.yamlCreate license secret:
kubectl create secret generic bindplane-license \
--from-literal=license="$BINDPLANE_LICENSE"Deploy Bindplane:
kubectl apply -f - <<EOF
apiVersion: k8s.bindplane.com/v1alpha1
kind: Bindplane
metadata:
name: bindplane
spec:
config:
licenseSecretRef:
name: bindplane-license
key: license
store:
postgres:
host: bindplane-postgres-rw
usernameSecretRef:
name: bindplane-postgres-superuser
key: username
passwordSecretRef:
name: bindplane-postgres-superuser
key: password
EOFOnce deployed, the default namespace will have the following workloads:
- Bindplane Node: The primary Bindplane deployment that handles all user and collector connections
- Bindplane Jobs: Periodic jobs
- Bindplane Jobs Migrate: One-shot database migration Job (completes and exits)
- Bindplane NATS: Bindplane with the embedded NATS server, forming the distributed event bus for Bindplane communication
- Bindplane TSDB: The Bindplane metrics storage backend, typically Prometheus
- Bindplane Transform Agent: The transform agent powers Bindplane's Live Preview
NAME READY STATUS RESTARTS AGE
bindplane-jobs-b4d59c95b-vnn9z 1/1 Running 0 60s
bindplane-jobs-migrate-<hash> 0/1 Completed 0 60s # runs to completion; absent after TTL expires
bindplane-nats-0 1/1 Running 0 88s
bindplane-nats-1 1/1 Running 0 60s
bindplane-node-6cd57b4977-8k7zr 1/1 Running 0 52s
bindplane-node-6cd57b4977-b4ct9 1/1 Running 0 60s
bindplane-node-6cd57b4977-xzj9p 1/1 Running 0 60s
bindplane-postgres-1 1/1 Running 0 8m38s
bindplane-transform-agent-79b648557d-nhj98 1/1 Running 0 60s
bindplane-transform-agent-79b648557d-scwhk 1/1 Running 0 60s
bindplane-tsdb-0 1/1 Running 0 7m29s
- Configuration Reference — all available
spec.configfields with examples - API Reference — full CRD type definitions
- Architecture Overview — how Bindplane's components interact
- Deployment Sizing — recommended resource allocations for different scales