# Single Instance

### Architecture

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

* Bindplane as a Single pod.
  * Deployed as a StatefulSet.
  * BBolt storage backend using a persistent volume claim.
* Prometheus time series database
  * Deployed as a StatefulSet.
  * Persistent storage using a persistent volume claim.
  * Prometheus is deployed and managed by the chart using [observIQ's Prometheus image](https://github.com/observiq/bindplane-op-enterprise/pkgs/container/bindplane-prometheus).
* Single transform agent pod, for [live preview](broken://pages/QeJXTHAiy3fbDC0oMrLz).

{% hint style="info" %}
**NOTE**

Bindplane uses Prometheus as a storage backend for collector throughput metrics. It is unnecessary to manage Prometheus outside of the Helm chart.
{% endhint %}

### Prerequisites

#### System Requirements

* Storage class which supports persistent volume claims (When running as a StatefulSet).
  * See [the instance sizing guidelines](/deployment/virtual-machine/bindplane/prerequisites.md) for recommended disk capacity.

### Installation

Add the Bindplane Helm chart to your workstation.

```bash
helm repo add "bindplane" \
    "https://observiq.github.io/bindplane-op-helm"

helm 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 project.
* `config.password`: Your basic auth password for the Administrator project.
* `config.sessions_secret`: A random uuid. You can use `uuidgen` to create one.

```yaml
config:
  # These options should be configured by
  # the user.
  username: ''
  password: ''
  sessions_secret: ''

backend:
  type: bbolt
  bbolt:
    volumeSize: '120Gi'

resources:
  # Request 2 cores and allow cpu bursting.
  # Request fixed amount of memory, 8Gb.
  requests:
    cpu: '2000m'
    memory: '8192Mi'
  limits:
    memory: '8192Mi'
```

{% hint style="info" %}
**NOTE**

Follow the [the instance sizing guidelines](/deployment/virtual-machine/bindplane/prerequisites.md) when modifying the resource requests and limits.
{% endhint %}

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

```bash
helm repo update

helm upgrade \
    --values="values.yaml" \
    --namespace=bindplane \
    --create-namespace \
    --install \
    bindplane \
    bindplane/bindplane
```

After a few moments, check the namespace by running `kubectl -n bindplane get pod`. You will see three pods:

* Bindplane
* Prometheus
* [Live Preview](broken://pages/QeJXTHAiy3fbDC0oMrLz) transform agent.

```
NAME                                        READY   STATUS    RESTARTS   AGE
bindplane-0                                 1/1     Running   0          3m42s
bindplane-prometheus-0                      1/1     Running   0          3m42s
bindplane-transform-agent-f5c6fb575-5cgtr   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](/deployment/kubernetes/server/installation/high-availability.md) documentation for details on how to deploy Bindplane using a scalable architecture.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.bindplane.com/deployment/kubernetes/server/installation/single-instance.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
