# Installation

Bindplane is fully supported on Kubernetes.

### Prerequisites

#### Helm

Bindplane is deployed with [Helm](https://helm.sh/). Make sure you have Helm installed on your workstation.

The Bindplane Helm Chart source can be found [here](https://github.com/observIQ/bindplane-op-helm).

#### Supported Distributions

The following Kubernetes distributions are officially supported:

* Google Kubernetes Engine (GKE)
* Amazon Elastic Kubernetes Service (EKS)
* Azure Kubernetes Service (AKS)
* OpenShift 4.x

Self-managed Kubernetes clusters are supported. See the [System Requirements](https://docs.bindplane.com/deployment/kubernetes/server/installation/single-instance) section for details.

### Installation

Bindplane supports two architectures for Kubernetes. Single instance ([StatefulSet](https://docs.bindplane.com/deployment/kubernetes/server/installation/single-instance)) and high availability ([Deployment](https://docs.bindplane.com/deployment/kubernetes/server/installation/high-availability)).

The StatefulSet supports running Bindplane as a single pod without dependencies. It does not require a dedicated database or event bus. The StatefulSet is suitable for simple environments where Bindplane can be scaled vertically and 100% uptime is not a requirement.

The Deployment supports running Bindplane with multiple pods. Providing resiliency and load balancing among the Bindplane instances. When using the Deployment architecture, a dedicated database and event bus are required. The Deployment is suitable for environments where horizontal scaling and uptime are requirements.

* [Installation Guide](https://docs.bindplane.com/deployment/kubernetes/server/installation/single-instance)
* [High Availability Installation Guide](https://docs.bindplane.com/deployment/kubernetes/server/installation/high-availability)

### Usage

Once Bindplane Server is deployed, it can be reached by the remote URL endpoint. By default, the remote URL is set to the service endpoint.

```
BINDPLANE_REMOTE_URL=http://bindplane.bindplane.svc.cluster.local:3001
```

This remote URL is suitable for deploying collectors within the cluster. If you would like to reach Bindplane from outside of the cluster, see the [Next Steps](#next-steps) section.

When not exposing Bindplane with ingress, you can use port forwarding to connect to the web interface.

```bash
kubectl \
    -n bindplane \
    port-forward service/bindplane 3001:3001
```

Navigate to [http://localhost:3001](http://localhost:3001/) on your workstation.

### Next Steps

#### Collector Installation

With Bindplane deployed, you can move on to installing collectors to your cluster. See the [Kubernetes Agent Installation](https://docs.bindplane.com/deployment/kubernetes/collector/install) documentation for details.

#### Ingress

If you would like to reach Bindplane from outside of the cluster (web interface, agent connections, etc), follow the [Bindplane Server Ingress](https://docs.bindplane.com/deployment/kubernetes/server/components/kubernetes-ingress) documentation.
